Frequently asked questions (2019 version)

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. 

I am mostly interested in machine learning.  Will this be useful to me?  In this cloud computing class we won't be doing any machine learning topics, but even so, the answer is yes.  Modern machine learning is moving to include sensors and to make decisions under real-time conditions (with deadlines), and even to take real-world actions.  Azure IoT is designed to be the runtime environment for building that sort of smart solution.  So we will be learning about the "operating system" where your smart applications need to run.

Of course some people end up taking a class like this and then deciding that even so, they will work in some other setting, like a big-data analytics platform, or perhaps using "batch" programming tools like Hadoop or Tensor Flow.  Even so, this class will cover some topics that can make a 10x or even 100x performance difference for your smart system.  So if that matters, CS5412 may not be dead on topic for you, but it will still be useful.

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: they "preregister".  Then when general registration opens up, we also open up an additional 60 spaces, more or less.  Anyone who is unable to register at that second stage would 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).  As it turns out, many people just shop around, and end up dropping some classes.  This frees up seats, 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?  In fact we do cover more than this summary might make it seem, but in a nutshell, we don't have enough lectures to cover every aspect of the cloud (which is a huge ecosystem).  So we focus.

What background is required?  CS5412 assumes that you have a solid background doing systems programming and are comfortable writing small amounts of code in C# or Python or a similar language.

If the course won't teach the cloud APIs and subsystems, how can I learn them?  We are focusing on Azure IoT because the environment is really a Linux-based one.  The specialized tools Azure provides have APIs of their own, but they are super-well documented.  Moreover, typical projects start by downloading the code for a precreated demo that Microsoft has posted online, and then customizing it.  So rather than memorizing a whole new system, the style of coding is really more like downloading "Hello World", and then changing the string to "Hey look, my cloud project is working!".  Well, perhaps a little more complicated.  But this is not a class where writing heroic amounts of code is necessary.

How do we grade? CS5412 is graded on the basis of a single in-class prelim and a final project (there are no in-class quizzes, and there will not be any final exam). The prelim 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 exam draws on material from roughly the first 8 weeks of the course.

Projects receive frequent "feedback" but the real grading is mostly based on the final version, which we will review at the end of the semester.  You'll do a demo, will show us a slide deck or poster (we like posters!) and explain what the system is doing, and every single group member will get a chance to tell us about his or her contribution and answer a few questions.  This experience is like being a member of a team in industry, and will help you prepare for your high-paying job as the world's most sought-after farm automation expert!

In-class prelim:  The prelim will be on March 26 and will cover the first 15 lectures.  It will be an in-class exam.    Closed book, but you may bring up to 4 pages of your own written notes and can consult those during the exam.

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.

Makeups:  It is not a good idea to plan an interview trip on March 26.  But if you are going to be out of town, we will need to work it out with the company you are interviewing out so that their HR administrator can receive the prelim from us.  Then you will take it on the same day as other people do, more or less at the same time, and you will have a way to call us during the exam with any questions you might run into.  Since the West Coast is 3 hours "behind" Ithaca, this means you would start your interview day by taking the prelim, probably at 8:00am.

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.

In spring 2019 a big focus is on actually using Azure's IoT Edge to talk to real sensors in farming settings.  But, due to a lack of smart farms (we are getting there but it takes times), devices (drones are expensive, as are fitbits for cows), and CALS (agriculture) students to work with our CS5412 students, some projects will use prerecorded data, some won't include any smart farm content at all, and some might not even be done on Azure (for example if you really prefer the AWS tools and already know them, we aren't really going to force you to use Azure).

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.  The 2 or 3 would not include the external "CALS consultant" many teams will work with.

We wanted a CALS member, but there weren't enough CALS students.  This is a first try with CALS students paired to CS5412 project teams and we probably won't manage to get a 1:1 match.  Other CS5412 project teams will work on their own, but on similar topics.

Will we need to take a CALS class too?  No.  CS5412 students only take this course, and the CALS students will take classes in CALS.  But our courses are working together to make it possible for us to collaborate on shared projects.  Grading will be separate: the CALS students get graded in CALS for their class, and you'll be graded in CS5412.  Still, by working with the CALS "customers", we will get a kind of direct hands-on experience with real users.

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: The textbook link lists a few books you could use to learn more.