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 has one final and a few quizzes.  We use a special home-brew system to let you take quizzes on CMS but only if you attended class the day of the quiz.  You can miss two quizzes -- we drop the low two scores, which would be 0 on any quiz you miss.  The others all count.  The {final+quiz} contribution to your grade is 50%.  Then we also have homeworks and a project; those make up the other 50% of your grade.  Last, we have extra credit that helps for points lost on the homework or project.   We may tweak these percentages for spring 2020 -- if so we will update this web page.

Makeups:  We don't have a plan for a makeup on the final, but we can help if you have 3 exams on the same day or if our exam exactly overlaps some other exam.

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.  People not enrolled in the class must not help people in a project team: we would consider that a violation of academic integrity.

In spring 2019 a big focus was on actually using Azure's IoT Edge to talk to real sensors in farming settings.  In 2020 we continue to offer those options but expect that more teams will work on other ideas and that the number doing smart farming with Azure IoT might be just half the class, not most of the class.

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.