EECS 582: Advanced Operating Systems (F’17)

Preliminary schedule is online

Students asking about the course capacity: Please enroll in the waiting list and show up to the first day of class where we'll discuss the course content in detail. This will help you understand if EECS 582 is suited for you. Note that the primary audience for this course is graduate students interested in systems research.

Course Description

Building a large computer system requires understanding the complex interactions between multiple layers in the computing stack such as applications, runtimes, the operating system, and hardware. Building large systems is different than building algorithms: systems are more complex, and their requirements are less well-defined. Good system designers understand the right trade-offs between performance, utility, usability, and reliability.

In this course, we will study successful modern and classical computer systems and distil principles for building such systems. We will focus on which design decisions the designers faced, and why they made the choices that led them to successful system designs. The study of these systems and principles will prepare students for future computer systems research.

Please note that the name of this course is “Advanced Operating Systems” for historical reasons. The course is not just about advanced topics in operating systems, but about advanced topics in general computer systems.


The formal prerequisite for this course is EECS 482 (Introduction to Operating Systems) or equivalent from another university. Further background in computer networks, databases, and programming languages will be helpful. The students should be highly motivated to pursue systems research.

If in doubt about the requirements, please check with the instructor.

Tentative Schedule and Format

Please see the preliminary schedule. Please read the assigned papers for the first lecture before coming to class.