Latest Announcements

02/06: Potential project topics posted
01/30: Class blog is setup
01/15: Tentative course syllabus is available
01/10: Course website is up

Course Overview

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:

  • How to read a research paper in an objective manner.
  • How to write a critical analysis of the research described in a paper.
  • How to articulate ideas and insights into a research paper.
  • How to compare and contrast different approaches to understand their trade-offs.
  • How to synthesize research themes and topics across multiple papers.

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).



Ryan Huang
Address: Malone 231
Phone: (410) 516-4522
Office Hours: Tue/Thu 4-5pm, or by appointment, Malone 231


Lecture Tuesday/Thursday 01:30pm-02:45pm
Bloomberg 172


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 of the 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.


You are required to submit a brief review for each lecture’s reading task. If there are two required papers, you can choose one of them to write a review. You can refer to the provided review template in writing your review. A helpful guide written by Bill Griswold on how to read and critique a research paper is linked here.

I have setup a class blog with each paper to be discussed as a blog post. Reviews and discussions will be comments posted to these posts. You need to submit your reviews as comments by 12pm of each lecture. The benefit of blog-based reviewing is that you can get different perspectives from your peers (comments will be made visible after each class). You are also welcome to submit questions that you would like to be discussed as a comment beforehand. If a paper is too confusing to understand, please write a critique to demonstrate your effort to engage, and hopefully encourage discussion from others who struggled similarly.

Class Participation

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. I will lead discussions by asking questions of students at random in class. 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 contact me. In general, I would prefer students who haven’t done the reading do not come to class. You are allowed three absences but you must consult me if there will be more. I will ask direct questions about the paper and will expect you to be able to answer.


  • Class participation: 15%
  • Reviews: 10%
  • Quizzes: 25%
  • Project: 50%


  • Reviews, if any, must be turned in before class.
  • Three absences of classes are allowed for good reasons (e.g., conference presentation, interview). But reviews of the papers must be turned in.
  • You are strongly encouraged 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.
  • The course project is to be completed as a team. You can discuss project materials with others in the course, but your code must have been authored exclusively by members of your team. You may not copy code from another team or make your code available to others.
  • All students are required to know and adhere to the JHU CS Department Academic Integrity Code and university policies. Failure to do so will result in serious consequences outlined in the policy.


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 (UCSD) for his generous sharing of his lecture notes, which he had carefully crafted and refined for more than 10 years.