(2018 version.  Click here for 2019).

Frequently asked questions

Who should take this class?  CS5412 aims primarily at graduate students (MEng, MS, PhD), from any area. We welcome undergraduates who are far enough into their studies to have a solid "systems" background. We do expect that all students will be strong programmers with plenty of experience writing systems software. 

Help!  I'm unable to sign up!   This is just a side effect of how CS enforces priority access for our largest courses (CS5412 is not one of the really big ones, but it falls under the same policy).  We allow an initial set of 100 people to sign up, from inside the CS program.  The next group go on a wait list, and then there is a secondary wait list if the total number exceeds the room capacity (Gates G01 has capacity for 156 students).  But because many students sign up for more than 18 credits and then drop back down to 18 once they have a sense of what each course is really about, if CS5412 had 125 students on day one, it would probably finish up with 85 by the end of the semester.  So people who wanted to get in will end up able to do so, eventually.

We do have a prioritization: in CS5412, we always prioritize people who have been attending class over people who have not been showing up.  We use attendence lists for this, and also use them to set up a CMS account, which is how you will submit your midterm and your project plan (we'll explain this later, but in a nutshell, we do ask for you to hand various things in about the project throughout the whole semester).  CMS is also how you will get access to feedback for your class project, and how you eventually will learn your grade for the course.

So sign up for the wait list when it lets you do that, don't panic, and definitely come to class.  It will work out.

Why doesn't this class cover more of the cloud, given that the name is "cloud computing" and not "fog and edge computing"? This gets at that core issue of focus. These days, each different career path probably touches on the cloud, whether you plan to end up in medical information systems, smart highways, enterprise automation, you name it. And each different "cut" through the cloud would lead to a distinct course. There is no way to cover everything in a single course, and there is no simple way to pin down a meaning for cloud computing that would be completely general and yet have enough substance to merit a semester-long class. So, at Cornell, each instructor picks a focus and matches the course to fit that focus.

The fog computing area is an outgrowth of edge computing, and edge computing is a big part of what Facebook, Google, Microsoft, eBay and others do.  So when we learn about these topics, we will be learning a lot of detail about how those cloud infrastructures are built -- the class isn't about theory, and is very strongly focused on real solutions as described by these leading companies, and others.  But in doing so, we'll need to spend whole lectures on individual subtopics, and the semester is only 14 weeks long, so inevitably, that decision to go deeply into these real technologies and to look at how they are really used, what really limits them in the company settings just mentioned, is also a decision not to look closely at all sorts of other technologies that simply don't play as big a role in edge settings.

One thing we do promise: this course really does focus on things actually used in today's cutting-edge platforms at companies like Facebook, etc.  It isn't some sort of academic exercise.  We just are keeping the scope under control by focusing on the edge.

What background is required?  CS5412 assumes that you have a solid background doing systems programming, networking and operating systems, and have taken CS architecture and theory classes.  You don't need to have taken them at Cornell, but you should have this experience from some sort of prior class or prior programming activity. Most projects are done in Java, C++, or C#, but we have seen successful Python projects in the past too.

If the course won't teach the cloud APIs and subsystems, how can I learn them? We expect you to make a series of choices (probably with a group): which cloud platform to use (mostly AWS or Azure), which tools to use, and how to use them. Many projects start with demo solutions that Amazon or Microsoft provide online, and then modify or extend them, and this is absolutely fine. The cloud has a tremendous amount of prebuilt technology and using things that already exist will save you time. Using them in smart ways is the key: to end up with solutions that have good scaling and good real-time response properties, you need to pick wisely. And we'll teach you how to make those choices. But then the actual details of using them will be part of your challenge in doing your project.

How do we grade? CS5412 is graded on the basis of a single take-home midterm exam and a final project (there are no in-class quizzes, and there will not be any final exam). The mid-term exam will involve thinking about practical problems of the kind seen in large-scale cloud settings and showing us that you understand how to transform those problems into solutions using technologies we covered in class. We will be very detailed about what we want you to do, and how we plan to grade, and we award generous partial credit.  The prelim draws on material from lectures 1-15, but especially from lectures 8-13. For the exam, you must not discuss solutions with anyone else. For the projects, you can discuss ideas with anyone you like.

Midterm exam: The date is shown on the syllabus... put it on your calendar now!  The exam is a take-home, but we want you to do it when we assign it, not a week late.  Don't interview in California that day.  One part of the exam centers on a kind of coding problem from the key-value storage topic that we will be discussing in the weeks leading up to it, although the exam is cumulative and has questions from other lectures too.  As for the code fragments:  You'll be handing in code in C++ or Java but you won't need to run it in order to do the exam.  You won't have any exam questions on the second half of the lectures, but you might be asked about material from those lectures in connection to your project, including at the demo and oral presentation at the end of the semester (so you are going to have to keep attending lectures).

Projects: For the project, we actually encourage group work. Whether a project is done individually or by a team, we grade everyone the same way. We do expect that every person does individual work, but this can mean doing different aspects of a shared solution. We generally expect that a group of size N>1 can do more than a single person. We generally give the entire project group the same grade.

We created a page that has some suggestions in this fog and edge area, but are open to proposals by groups that have some clever idea of their own, provided that the idea is highly relevant to our class objectives. Not all projects will be completely real: some kinds of edge computing sensors just don't exist yet, and you may need to build solutions that have a mix of simulated data sources and real cloud computing layers to process that data. But we encourage everyone to make projects as real as practical, within the time limits of a single semester.

You'll need to hand various things in, once every few weeks: an initial topic writeup, a project plan, then a few mid-point status updates with code your team has written and screenshots.  This is to ensure that the projects get attention from week one, not just in the last ten days before the due date for demos.

Grading will be S/U with comments as needed for the various things you hand in, but will be on a numberical scale (0-100) for the actual final project demo and overall grade.  Then we translate that back to a letter grade for the class.

MEng project: Historically, some CS5412 students have been MEng students and have asked to do a slightly larger project that can count as their MEng degree project. For this, sign up for additional credits using CS5999, the MEng project credit course. We will expect you to explain to us precisely how you enlarged the project relative to what you would have done had it not been an MEng project, in the form of a written document you will submit to us when doing project demos. If one group has some people doing MEng and some people not doing MEng credit, this becomes hard to justify because in effect, you would be asserting that some people did X amount of work, but some other people did 2X work. We will generally not approve such plans: in any group, everyone should do equal work. But if everyone in the group is doing MEng, that would be ok with us.

If you do an MEng project we always give you the identical grade for CS5999 that we give you for CS5412.

Groups that experience setbacks. It isn't common, but now and then some group has a problem -- people don't get along, or a person wants to join a group, or two small groups wish to merge. We allow this, but you must ask our permission, explain what the plan is, and everyone involved must agree.

Group size: We find that groups of size 2 or 3 are best. We almost never agree that a group can have more than 4 people.

Lectures: We will not be taking attendance, but we test on the lecture content, and we expect all projects to be smart about things covered in lecture. You cannot get a high grade in this course without demonstrating that you have mastered the material covered in class.

Textbook: Some of the content of the course is covered in my textbook (see the bottom of my web page, http://www.cs.cornell.edu/ken), or by a second book recently published by Ian Foster,  but most of the material we'll cover isn't really treated in that book, or any other. As much as possible, I'll put pointers to readings in the online syllabus, so that week by week, you can read more. Sometimes that will be a research paper, sometimes a Wikipedia article, sometimes a ComputerWorld article, and sometimes a user manual published by a vendor, depending on the topic. We do not require that you purchase my textbook, or any other material -- you can find copies of my book in the Engineering library, and the other materials will be online.