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. CS4414 is an ideal background, but some people would have taken operating systems, distributed systems, networking, database systems. So background can come from many kinds of courses -- but every student must have a strong background.
I am mostly interested in machine learning. Will this be useful to me? Absolutely! Machine learning systems need to run on a platform -- and the cloud is the platform everyone uses. Even our projects will be ML-based in many cases, except that we also think hard about how to embed that ML into a context where it can do something like making a dairy farm smart.
Help! I'm unable to sign up! In spring 2021 there is no cap, but we are enforcing the idea that everyone must have adequate background. When you add CS5412 you are put on a wait list and told to fill out a Google doc form. Ken and the TAs will review those forms during the add/drop period and we will send PIN numbers to let people enroll if they had reasonable answers to our questions.
Why doesn't this class cover more of the cloud? We focus on the connection between the cloud and the IoT edge, leaving topics like big data analytics for other courses.
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. Most cloud programming involves writing just a few methods -- "lambdas" or "trigger functions" to customize existing machinery provided by the cloud vendor -- Microsoft Azure, in our case.
If the course won't drill down and teach the specific cloud APIs and subsystems I am supposed to customize, 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 a few quizzes that you'll be doing at home (the rule is that once you download the quiz, you have a fixed amount of time to do it and upload your solutions). We also have lots of hands-on project assignments. There is no final or in-person prelim.
Projects: For the project, we 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.
You'll need to hand various things in for your project, 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. Only a few teams will be able to pair with CALS students, but even teams that can't will have access to CALS data and could do projects in this space.
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.