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. 

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.

But I need big data! No problem: Take a big data course. But this course isn't that course. Sorry...

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. For the exam, you must not discuss solutions with anyone else. For the projects, you can discuss ideas with anyone you like.

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 plan to suggest a few projects 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.

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,, 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.