Skip to content
Snippets Groups Projects
Commit bc663bf3 authored by Sastry, Nishanth Prof (Comp Sci & Elec Eng)'s avatar Sastry, Nishanth Prof (Comp Sci & Elec Eng)
Browse files

First introductory lecture

parent 976f4c0d
No related branches found
No related tags found
No related merge requests found
<!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>&ldquo;Cloud native software development&rdquo;</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 &ldquo;first class&rdquo;; 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> &ldquo;Big Data&rdquo; processing</h3>
<ul>
<li>Hadoop</li>
<li>Spark</li>
<li>&#x2026;</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 &ldquo;soft skill&rdquo; 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&rsquo;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 &rsquo;&rsquo;-ilities&rsquo;&rsquo; 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&rsquo;&rsquo; 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 -&gt; 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>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment