Operating systems are a critical and complex piece of software that does the heavy lifting of managing computing devices for other software. It is also one of the few kind of software that has been extensively engineered, studied, refined, debated, and even overhauled for over decades. While one might consider operating systems as a mature software already, its evolution is far from complete with exciting new ideas that keep being proposed.
This course exposes students to the operating systems as a research field and study operating systems, and more broadly computer systems in general, from a design point of view. We will examine different systems in both important historical context and recent research developments. In addition to teaching various system techniques, the objectives of the course also include helping students learn:
This course involves readings on classic and new papers. Topics include OS structure and extension techniques, virtualization, synchronization, communication, file systems, cloud systems, reliability, formal verification, security, and history and experience of systems.
Prerequisites: 601.318/418/618 (Principles of Operating Systems).
This course does not have a required textbook. However, it is useful to use an undergraduate operating systems textbook as a reference, such as the ones recommended in CS 318.
The major material of the course comes from seminal, noteworthy, or representative papers from the literature. Each lecture will have one or two assigned papers to read. You MUST read the required papers before the class, and be prepared to discuss them. In-class questions or quizzes will confirm you do the reading.
For some topics, we will also list recommended papers. You are encouraged, but not required, to read those. Students often find it useful to form a reading group to discuss papers together before the class period, and we encourage the practice. The reading load will be heavy. So be sure to allocate enough time for it.
A helpful guide written by Bill Griswold on how to read and critique a research paper is linked here.
You are required to submit a brief review for each lecture’s required reading. The review must be turned in by 12pm on the day of each lecture. Please read further instructions on the paper reviews.
The structure of this course is unusual in that there are NO lectures or presentations during the class period. Instead, we will discuss research papers that we will have all read before each class period. Because of this format, class participation is vital to the success of the course. If you expect to just sit silently in the class and learn, you will get little out of this course.
I will lead the discussions for most of the lectures. I will ask direct questions about the paper and expect you to be able to answer. Note that your answers to these questions will be part of your overall grade. If you cannot do the reading for a particular class, please let me know. You are allowed three absences but you must still turn in the reviews before the next class.
Some of the later lectures will be presented by students. One student will be leading the discussion while the others participate. We will send the presentation schedule sign-up over email.
The course syllabus and materials are heavily influenced by the UCSD CSE 221, Harvard CS 261, and UT Austin CS 380L courses. We are particularly indebted to Geoff Voelker for sharing his lecture notes.