diff --git a/COM3014-intro.html b/COM3014-intro.html new file mode 100644 index 0000000000000000000000000000000000000000..8e0928cc85d4bf0ead4ba13211cc81805e684725 --- /dev/null +++ b/COM3014-intro.html @@ -0,0 +1,319 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<meta charset="utf-8"/> +<title>COM3014 Intro</title> +<meta name="author" content="Nishanth Sastry"/> +<style type="text/css"> +.underline { text-decoration: underline; } +</style> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js/dist/reveal.css"/> + +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js/dist/theme/moon.css" id="theme"/> +</head> +<body> +<div class="reveal"> +<div class="slides"> +<section id="sec-title-slide"> +<h1 class="title">COM3014 Intro</h1><h2 class="author">Nishanth Sastry</h2> +</section> +<section> +<section id="slide-1"> +<h2 id="1"><span class="section-number-2">1.</span> Intro to module</h2> +<ul> +<li>All about modern Web development +<ul> +<li>“Cloud native software development”</li> + +</ul></li> +<li>Extremely useful in job interviews +<ul> +<li>Every year, some students land job because of Docker+microservices</li> + +</ul></li> + +</ul> +</section> +</section> +<section> +<section id="slide-2"> +<h2 id="2"><span class="section-number-2">2.</span> What does Cloud Native mean to you?</h2> +<div class="outline-text-2" id="text-2"> +</div> +</section> +<section id="slide-2-1"> +<h3 id="2-1"><span class="section-number-3">2.1.</span> Microservices</h3> +<ul> +<li>Scale out rather than scale up</li> + +</ul> +</section> +<section id="slide-2-2"> +<h3 id="2-2"><span class="section-number-3">2.2.</span> Containers (Docker/Podman)</h3> +</section> +<section id="slide-2-3"> +<h3 id="2-3"><span class="section-number-3">2.3.</span> Continuous Integration/Continuous Delivery (CI/CD) practices</h3> +<ul> +<li>An approach to test everything</li> +<li>Make deployment “first class”; just like coding itself</li> +<li>(We talk about test frameworks; no Kubernetes)</li> + +</ul> +</section> +<section id="slide-2-4"> +<h3 id="2-4"><span class="section-number-3">2.4.</span> “Big Data” processing</h3> +<ul> +<li>Hadoop</li> +<li>Spark</li> +<li>…</li> + +</ul> +</section> +</section> +<section> +<section id="slide-3"> +<h2 id="3"><span class="section-number-2">3.</span> Assessments</h2> +<div class="outline-text-2" id="text-3"> +</div> +</section> +<section id="slide-3-1"> +<h3 id="3-1"><span class="section-number-3">3.1.</span> 100% <span class="underline"><span class="underline"><b><b>Group</b></b></span></span> coursework</h3> +<ul> +<li>Wait, what?</li> +<li>Why should my marks suffer if I end up with underperforming team mates?</li> + +</ul> +</section> +<section id="slide-3-2"> +<h3 id="3-2"><span class="section-number-3">3.2.</span> Main reason: Cloud native == team development</h3> +<ul> +<li>You have to know how to get along with people +<ul class="fragment grow"> +<li>Biggest lesson of this module is growing the “soft skill” of team work.</li> + +</ul></li> + +</ul> +</section> +<section id="slide-3-3"> +<h3 id="3-3"><span class="section-number-3">3.3.</span> You get to pick your languages</h3> +<ul> +<li>Each person can code a microservice</li> +<li>Different microservices talk over the wire, so you can use your own language!</li> + +</ul> +</section> +<section id="slide-3-4"> +<h3 id="3-4"><span class="section-number-3">3.4.</span> You EVEN get to pick your own problem to work on!</h3> +<ul> +<li>We don’t specify what WebApp you should create.</li> +<li>Find a problem you have been itching to work on</li> +<li>Process (teamwork; splitting into microservices; dockerization) is more important than the actual WebApp or the language you use</li> + +</ul> +</section> +<section id="slide-3-5"> +<h3 id="3-5"><span class="section-number-3">3.5.</span> BUT: How should we split our work?</h3> +<div class="outline-text-3" id="text-3-5"> +</div> +</section> +<section id="slide-3-5-1"> +<h4 id="3-5-1"><span class="section-number-4">3.5.1.</span> Each team member does one Microservice. Each microservice has its own UI and data backend</h4> +</section> +<section id="slide-3-5-2"> +<h4 id="3-5-2"><span class="section-number-4">3.5.2.</span> One team member does UI; one does back end. Business logic split into microservices.</h4> +</section> +<section id="slide-3-6"> +<h3 id="3-6"><span class="section-number-3">3.6.</span> BUT: What if one team member does not do the work they agreed to do?</h3> +<div class="outline-text-3" id="text-3-6"> +</div> +</section> +<section id="slide-3-6-1"> +<h4 id="3-6-1"><span class="section-number-4">3.6.1.</span> Your (collective) job to get the team together</h4> +</section> +<section id="slide-3-6-2"> +<h4 id="3-6-2"><span class="section-number-4">3.6.2.</span> You will have a team mentor (TA/Demonstrator)</h4> +</section> +<section id="slide-3-6-3"> +<h4 id="3-6-3"><span class="section-number-4">3.6.3.</span> We ask you to sign team contracts <a href="https://www.cmu.edu/teaching/designteach/teach/instructionalstrategies/groupprojects/tools/TeamContracts/TeamContract.docx">Team Contract 1</a>; <a href="https://www.cmu.edu/teaching/designteach/teach/instructionalstrategies/groupprojects/tools/TeamContracts/teamcontracttemplate.docx">Team Contract 2</a> in Week 5</h4> +</section> +<section id="slide-3-6-4"> +<h4 id="3-6-4"><span class="section-number-4">3.6.4.</span> We ask you to evaluate honestly in Week 8. <a href="https://www.cmu.edu/teaching/designteach/teach/instructionalstrategies/groupprojects/tools/GroupEvaluations/GroupProcess-EvaluationForm.docx">Evaluation 1</a>; <a href="https://www.cmu.edu/teaching/designteach/teach/instructionalstrategies/groupprojects/tools/SelfEvaluations/SelfEval-Form.docx">Evaluation 2</a></h4> +</section> +<section id="slide-3-6-5"> +<h4 id="3-6-5"><span class="section-number-4">3.6.5.</span> (<span class="underline"><span class="underline">With the agreement of all team members</span></span>), you can do group scaling:</h4> +<ul> +<li>This is a zero sum game: If Team member A scales up by X%; some others (e.g., members B and C) should scale down so that their scale down is collectively -X%.</li> +<li>This is a <i>recommendation</i>: We (markers) reserve the right to override.</li> + +</ul> +</section> +<section id="slide-3-6-6"> +<h4 id="3-6-6"><span class="section-number-4">3.6.6.</span> Scaling cannot happen at the last minute before submission</h4> +<ul> +<li>Any scaling should be agreed upon by all team members and signed off with your team mentor/TA <span class="underline"><span class="underline">by Week 8</span></span>.</li> +<li>Good incentive to get most work done by Week 8.</li> +<li>If team member has not contributed by week 8, you can assume they are not contributing and make case for scaling.</li> + +</ul> +</section> +<section id="slide-3-7"> +<h3 id="3-7"><span class="section-number-3">3.7.</span> Changes to teams this year</h3> +<ul> +<li>Each team will have 5-6 members</li> +<li><i>New this year</i>: You will be allowed to choose your own team members</li> +<li><i>New this year</i>: MSc students will have a separate team; UG students will have separate teams +<ul> +<li>Each cohort (MSc and UG) will be evaluated separately; though the marks scheme is the same</li> + +</ul></li> + +</ul> +</section> +</section> +<section> +<section id="slide-4"> +<h2 id="4"><span class="section-number-2">4.</span> Flipped lectures:</h2> +<p> +Each week involves: +</p> +<ul> +<li>Watching recorded lectures (1-1.5 hours)</li> +<li>Coming to lecture, where we will have discussion about the lecture (1 hour)</li> +<li>Discussing with your coursework team about these questions and your coursework (1 hour; no classroom timetabled; meet on campus where convenient)</li> +<li>MS Teams site created for this class. Questions will be posed about the lecture on the #general channel</li> + +</ul> +</section> +<section id="slide-4-1"> +<h3 id="4-1"><span class="section-number-3">4.1.</span> Meet by yourselves as a team (your coursework team)</h3> +<ul> +<li>No classroom timetabled but important to make progress (remember Week 5 and Week 8 deadlines)</li> +<li>Purpose: To Make progress on your coursework and discuss recorded lecture + questions</li> +<li>Need to meet as a team, not a</li> +<li>For next week, coursework/self-learning: <a href="https://missing.csail.mit.edu/2020/version-control/">https://missing.csail.mit.edu/2020/version-control/</a></li> + +</ul> +</section> +</section> +<section> +<section id="slide-5"> +<h2 id="5"><span class="section-number-2">5.</span> Overall plan: Module divided into three parts</h2> +<div class="outline-text-2" id="text-5"> +</div> +</section> +<section id="slide-5-1"> +<h3 id="5-1"><span class="section-number-3">5.1.</span> Intro: indispensable ’’-ilities’’ of scalable cloud native software</h3> +<ul> +<li>Reliability and failure</li> +<li>Scalability</li> +<li><b><b>Lab</b></b>: +<ul> +<li>Git and collaborative software development.</li> +<li>Intro to Docker</li> + +</ul></li> +<li><b><b>Coursework</b></b>: Teams formed by <span class="underline"><span class="underline">end of Week 2</span></span></li> + +</ul> +</section> +<section id="slide-5-2"> +<h3 id="5-2"><span class="section-number-3">5.2.</span> Cloud Native Software Development</h3> +<ul> +<li>Intro to the cloud and ``-aaS’’ paradigms</li> +<li>Devops mindset and tools/team practices of cloud native companies</li> +<li>Microservices</li> +<li><b><b>Lab</b></b>: +<ul> +<li>Microservices (with Docker);</li> +<li>Docker compose;</li> + +</ul></li> +<li><b><b>Coursework</b></b>: Team Clinic 1: Team contracts + Problem definition</li> + +</ul> +</section> +<section id="slide-5-3"> +<h3 id="5-3"><span class="section-number-3">5.3.</span> Big Data Processing</h3> +<ul> +<li><b><b>Coursework</b></b>: +<ul> +<li>Team Clinic 2 (first week after Easter Break): +<ul> +<li>Firmed up architecture</li> +<li>First cut at implementation</li> +<li><b><b>_<sub>Scaling</sub> of marks settled__</b></b></li> + +</ul></li> + +</ul></li> + +<li>Hadoop + Lab</li> +<li>Spark + Lab</li> +<li>Social Web</li> +<li>NB: Not expected to use Hadoop or Spark in any significant way in coursework.</li> + +</ul> +</section> +</section> +<section> +<section id="slide-6"> +<h2 id="6"><span class="section-number-2">6.</span> How to get in touch</h2> +<ul> +<li>Use MS Teams</li> +<li>Use the General channel for questions about the module to Teaching Team</li> +<li>Use MS Teams (Files Tab -> Excel sheet) to write down your potential Team memberships +<ul> +<li>Make teams of 5 members each +<ul> +<li>_<sub>Ensure</sub> no one is on more than one team__</li> + +</ul></li> +<li>We will find teams for you if you do not manage to connect with other friends.</li> +<li>We may add additional team members to balance out</li> +<li>If you end up with slightly smaller teams, we will take that into account when marking.</li> + +</ul></li> + +</ul> +</section> +</section> +</div> +</div> +<script src="https://cdn.jsdelivr.net/npm/reveal.js/dist/reveal.js"></script> +<script src="https://cdn.jsdelivr.net/npm/reveal.js/plugin/markdown/markdown.js"></script> +<script src="https://cdn.jsdelivr.net/npm/reveal.js/plugin/notes/notes.js"></script> +<script src="https://cdn.jsdelivr.net/npm/reveal.js/plugin/search/search.js"></script> +<script src="https://cdn.jsdelivr.net/npm/reveal.js/plugin/zoom/zoom.js"></script> +<script> +// Full list of configuration options available here: +// https://github.com/hakimel/reveal.js#configuration +Reveal.initialize({ + +controls: true, +progress: true, +history: false, +center: true, +slideNumber: 'c', +rollingLinks: false, +keyboard: true, +mouseWheel: false, +fragmentInURL: false, +hashOneBasedIndex: false, +pdfSeparateFragments: true, +overview: true, + +transition: 'convex', +transitionSpeed: 'default', + +// Plugins with reveal.js 4.x +plugins: [ RevealMarkdown, RevealNotes, RevealSearch, RevealZoom ], + +// Optional libraries used to extend reveal.js +dependencies: [ +] + +}); +</script> +</body> +</html>