Course number: CS:4980
Title: Advanced Operating Systems
Credits: 3 sch
Contact hours: 3 50-minute lectures per week
Instructor: Octav Chipara
Textbook: No textbook is required
You find the class schedule here.
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.
If you want to refresh your knowledge of operating systems, below are some nice textbooks and undergraduate os courses.
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.
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.
As a starting point, please consider using the following review form. Email me your critiques in plain text (i.e., no attachments) and make sure to include the prefix “AOS:” in the title of your email. This rule also applies to all email communication, which will help me keep track of your emails.
The structure of this course is unusual in that there are only a FEW 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. You are allowed to miss at most three classes. If you will miss a class, please email me.
As part of the course, you will receive 2 – 3 assignments. The assignments will require that you use Linux and use C and C++ for implementation. Each assignment will require that you do measurements and write a report summarizing your results. You will be working in teams of 2 – 3 people.
Papers: I 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.
Projects: You can complete the course project 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.
The course syllabus and materials are heavily influenced by the UCSD CSE 221. We are particularly indebted to Geoff Voelker (UCSD) for his generous sharing of his lecture notes.