The purpose of this course is to teach operating system design from a research point of view. We will go over key topics of operating systems, walk through the evolution of many different operating systems techniques, and examine their usage in both important historical systems and in modern systems.
We will be going over the following topics:
This is a research-oriented seminar course with a major course project.
Prerequisite: CS 423, CS 425, and CS 433 (or equivalent). Take the Prerequisite Quiz if you are not sure.
The course does not have a textbook. Instead, the course material will come from seminal, noteworthy, or representative papers and articles from the literature. Each lecture (except the first) will have two assigned papers to read, typically including one from academia and the other from industry. You should read these papers before coming to class, and be prepared to discuss them. Occasionally I will also list recommended readings; you are encouraged to read those, but not required.
I highly recommend you to read Griswold's advices on how to read a research paper. The take-home message is that until you can answer a bunch of questions, you are not done reading a paper.
I also strongly encourage you to discuss the papers with other students in the class — you may have insights that others do not, and vice versa. Often students form reading groups, which I heartily encourage. Note that group discussion, however, is not an effective substitute for actually reading the paper.
If you need a textbook to review and catch background, I recommend the OSTEP book.
Since this is a discuss-based course, class participation is required. We will discuss the papers and articles that we will have all read before each class. I will lead discussions by asking questions of students at random in class. Note that your answers to these questions form 10% of your overall grade, so it is important that you both show up to class as well as read the papers.
The best way to learn is by doing. You will undertake your own research project individually or in a group of two to three. I will provide a list of ideas to get you started thinking (cf. the project page), but I highly encourage you to pursue your own ideas. You will write a project report and present it at the end of the course.
You are expected to be aware of UIUC's academic integrity guidelines. Any violation of the course or university policies will be treated seriously, and could lead to severe repercussions. Don't cheat. It's not worth it.
This course is designed based on CSE 221 (Graduate Operating Systems) taught at University of California at San Diego (where I did my PhD). It was my favourite course during my grad school -- I took it and TA-ed for it multiple times with different professors including Prof. Geoff Voelker, Prof. Yuanyuan Zhou, and Prof. Stefan Savage. They should take the credits for the course design.