CS 4410 - Operating Systems

General Information

In 2015, this class will be offered every semester (previously only offered in Fall).

Prerequisites

You need to have taken CS 3410 - Computer System Organization and Programming or ECE 2300 + ECE 3140 / CS 3420 - Embedded Systems. Don’t take this class without those.

Topics Covered

  • Processes and Threads
  • CPU Scheduling
  • Synchronization
  • Deadlocks
  • Physical and Virtual Memory Management
  • Networking
  • Disks and RAID
  • File Systems
  • System Security

Workload

If you’re not taking the practicum, the overall workload is very low, however be warned that it comes in waves, whenever a mini-project is due.

The workload in the practicum is quite high. The first project is the only easy and short one; the third is easy, and the second and fourth are both very difficult and very time-consuming. I honestly spent more time on this class than 3110 and took them at the same time.

^Seconded. This is a very difficult class. I took this at the same time as CS 3110 and CS 4320 and found both of those very easy in comparison to this class, even though it’s only 3 credits. The material is quite easy, however the tests are very specific and long, and the above two miniprojects (though you get to skip them if you’re taking the prac) were difficult and impossible, respectively. I did end up getting a good grade in the end, though (the class definitely is curved, regardless of what the professors say).

General Advice

Note: (Spring 2016) this class can have extremely frustrating course staff. Of course, this will vary every semester, but be prepared to have to request constant clarifications via Piazza and in office hours. In particular, one semester, the course staff auto-graded an assignment with the wrong Python version, meaning anyone that tried to take advantage of Python 2.7 features got a near-zero grade. And while most course staff would have noticed such a large portion of the class getting such low grades and tried to resolve it, the course staff here did not even release the grades until a few days before the final, leaving very little time to figure out what happened.

In short, the difficulty of the class comes more from those running it than the concepts themselves, which the professors do a good job of presenting.

Don’t push off “mini” projects. They may take longer than you expected. (leave at least a few days to be safe). Approach helpful TAs in OH to clarify writeup (one of the wordiest and unclear writeups you’ll ever see).

Can’t really study much for prelim/final in my opinion (assuming you have been going to lectures). Make sure you can solve sync problems with ease and correctness for the prelims.

Testimonials

The mini projects have a wordy writeup, but they are pretty fun and you’ll learn from each one. Python is also a neat choice of language.

Sirer is a boss.

Don’t be fooled by the wording - there is nothing “mini” about the projects. The 4th one is probably by far the largest project you’ll ever see in Cornell CS outside of Compilers/OS Prac.

It seems that the rigor of the projects may be changing. As of Fall 2013, Project 4 was less than 10 hours of work. No project took more than ~15 hours.

^^ This makes no sense because the projects haven’t changed in years.

Past Offerings

Semester Time Professor Median Grade Course Page
2020 SP TR 1:25 - 2:40 Lorenzo Alvisi N/A https://www.cs.cornell.edu/courses/cs4410/2020sp/
2018 SP TR 2:55 - 4:10 Anne Bracy B+ http://www.cs.cornell.edu/courses/cs4410/2018sp/
2013 FA TR 2:55 - 4:10 Emin Gun Sirer, Robbert Van Renesse B http://www.cs.cornell.edu/courses/cs4410/2013fa/
2012 FA TR 2:55 - 4:10 Emin Gun Sirer B+ http://www.cs.cornell.edu/courses/cs4410/2012fa/

Edit this page on GitHub: classes/CS4410.md

Edit me on GitHub