CS5412: Topics in Cloud Computing
(Spring 2019 focus:
Using the Cloud to Create Smart IoT Systems).

Syllabus for Spring 2019

10:10-11:25 TR Gates Hall Room G01

Prof. Ken Birman, 435 Gates Hall, x5-9199

Ken's office hours: Tuesday and Thursday after class (11:30-12:00) and after lunch (1:30-2:30) or by appointment.

TAs: Theo Gkountouvas <tg294@cornell.edu>, Soham Sankaran <soham@cs.cornell.edu>

Theo's office hours: Friday 9am-11am at Rhodes Hall 584 (from 2/8 up to 5/3).

Soham's office hours: Monday 1:10 p.m. - 2:10 p.m., Wednesday 1:30 p.m. - 2:20 p.m. in the Gates Hall 3rd Floor Lounge

Piazza Discussion Group: Log in to access it at piazza.

What is this course about?  Cloud Computing is an overarching term that covers modern computing infrastructures to support the web: browsers and web servers, but also ways of building mobile clients, scalable web services, and very fast infrastructures for serving up content in geographically distributed systems that might include dozens of data centers and millions of computers. More or less everything we do is cloud-based or uses cloud solutions these days.

The Internet of Things (IoT) is a more recent trend: people are connecting all sorts of sensors and smart controllable devices to the cloud, and creating applications that do machine learning or other forms of smart functionality in close collaboration with those devices.  For example, a smart highway would be like an air traffic controller for cars: it would use video cameras to monitor the highway, "understand" what all the cars are doing and what hazards exist, and then use that knowledge to help cars.  A smart car might use that information directly, while a smart guidance system would be more like Google Maps, but drawing on information from the smart highway to give better advice to the driver than if the car or the navigation system was totally on its own.

IoT is becoming a huge industry and is driving a major expansion of cloud computing.  Other examples, beyond the smart highway, include smart homes, smart power grid, smart cities, and our favorite topic for 2019: smart farms.

What makes all of these systems so smart is that people are moving decision-making support (machine learning) closer to the IoT sensors and actuators, for reasons of performance.. In classic machine learning and AI approaches, the ML and AI software was only available through data stored into files in the file system, and only ran in batches after long delays. So by shifting technology out from the back to the edge, we gain dramatic speedups.  

Lots of companies are players in this area, and we can't cover all of them.  In spring 2019, we'll probably focus mostly on the Azure IoT architecture.  This focus will let us drill in on IoT security, which is something Microsoft has viewed as a speciality.  Still, everything we learn about has a parallel in Amazon AWS or Google Cloud.

Our focus on Azure won't mean that you need to learn to program in Windows.  Under the covers, any Windows PC actually has a modern Ubuntu Linux system built right in!  And Azure lets you skip Windows entirely and just program on Ubuntu Linux.  In fact, even the people who work at Microsoft on IoT solutions use Linux for all sorts of things.  In CS5412, we can stick with those Linux/Ubuntu APIs.  So if you are familiar with Linux, you won't need to learn a new OS or anything like that.  Of course if you prefer Windows for some reason, that works too.

New in 2020! We feel that for the 2020 offering, it would be best to clarify some aspects of the expectations and requirements for taking this course.

Why did we make this decision?   Around 2017-2018, some students started to feel that cloud computing is so important to getting a job that some people decided to take the class even knowing that they had completely inadequate background skills.  By 2019 we saw a large group of such students, and a few had really big problems surviving in the class.  They stopped coming to lectures because they couldn't follow them, but didn't have good ways to study the material purely from textbooks or papers or lecture notes from their friends, because this kind of class centers on the lectures.  So you really do need to be able to follow lectures.

We understand how important landing a great job is to all our students, and we understand why you might feel that this particular course is vitally needed.  Yet even so, without the right background, you simply can't walk in and survive in a really hard graduate course at a top university.  And so we felt that we really need to clarify and stress the requirements.  To protect you against making really unwise choices, we plan to enforce them absolutely, with no exceptions.  This will also benefit students who do have the full background, because if everyone in the room starts on an even basis, the class can run in a smoother way, and the lectures can aim at "everyone" with a more uniform and balanced level of detail.

Prequisites [we always had them]. 
CS5412 is a hard course with a big software project, and you will not be allowed to take the class if you are inadequately prepared.  We require operating systems (either Cornell CS4410, or a solid grade in an equivalent course that covered similar topics), plus some exposure to networks and/or databases (Cornell courses are the ideal way to get that background).  We also require strong coding skills and experience in a language like Python, C++ or C# or Java, and actual hands-on experience building some fairly hefty software systems that you wrote from scratch, debugged, and completed successfully.  Do not even consider taking this course if you lack this background.  Speak directly with Professor Birman for explicit approval if unsure.  Taking OS at the same time is not the same as having taken it in the past, and is not a way to satisfy requirements.

Class attendance is required, and we use quizzes to verify that you really are there [new in 2020].  In the past, we sometimes were relaxed about class attendence, but by 2019 had a problem: many of the less prepared students found the classes hard to follow and started to skip lectures, because they couldn't understand the material without the required background.  Of course this becomes a snowball effect, where things get worse and worse, and it harms all the students who really do have the required background.  So, starting in 2020 we are enforcing a strict policy: unless you are interviewing or sick, we expect you to be in the room at 10:10, every single time, for the whole semester.  To enforce this we will have weekly quizzes that count towards your final grade.  They will be really easy if you attended class and paid attention, plus you will be better prepared for the prelim.  In contrast, you will not be able to successfully complete this course if you skip classes.

Many prelim questions are short-answer, not true-false, and not things you can just copy from notes [again, nothing new here].  In CS5412 we genuinely expect you to understand the material, and you cannot do the prelim by just memorizing any form of notes.  We do offer a lot of study materials, sample exams, etc, and we help you understand the content.   Then in the prelim, you will have to write little mini-essays on questions you have never seen in class.  Your grade will be based on whether your answers show real comprehension.  It will be impossible to do well if you cannot look at a new question, then synthesize knowledge taught in lecture and apply that to solve the question in a brief, clear way focused on the big issues.

Big Data.  In CS5412 we do look at big data technologies, but mostly from the perspective of how the tools were created.  You would need to take an ML course or a data analytics course to learn about actually extracting insight from big data using these modern tools.

Prelim.  We will have one prelim exam covering topics from the class, on March 26.  This will cover lectures 1-15.  There will not be any final. 

We have posted a study guide and will also run a review session.  The prelim from 2018sp is here (solutions).  Keep in mind that the class itself isn't identical.  The 2019sp prelim will focus on topics discussed in this semester, not topics from one year ago.  But the style of the exam will be similar.  See the FAQ if you will be out of town for an interview on March 26.

Projects. Everyone has to work on a project. The project grade will be one half of your course grade!

In Spring 2019, the course-recommended projects will all be examples of smart farming solutions, created jointly with people who are actually trying to automate various aspects of farming.  But fear not: although some projects would focus on actual cows and milk, others will be looking at programmable drones that could be used to give instructions to smart tractors or other kinds of robots.  We have projects for people who might actually want to get mud on their shoes, but we also have a lot of projects that will just use prerecorded data that you can play back "as if" your cloud application was talking to an actual farm sensor or controlling device.

You can also define a project of your own, and those do not need to be smart farming, but they definitely need to be about the cloud computing ideas and tools covered in class, and we prefer to see an IoT element.

MEng Projects. Some students expand their CS5412 project into an MEng project. This is not a problem!  See the separate web page about CS5999 and the FAQ.

Help! I can't enroll. At Cornell, enrollment is prioritized and runs in a series of  "tranches".  Some people do need to join a wait list (we open it up during the spring enrollment period), but because plenty of people drop the class, eventually the wait listed students do get a chance.  The important thing is to attend the class, even if you have not yet been able to officially enroll.  If you wait until the enrollment finally opens up, you may have missed the first few weeks of class, and at that point will be so far behind that catching up can just be impossible.  So come to class even if you aren't actually enrolled yet.

FAQ Syllabus for Spring 2019 Project Options Recitation Prelim study guide CS5999 Info
Cloud Resources Cloud computing accounts TextBooks (not required) Piazza Discussion Site Sample Prelim