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.
Please see the preliminary schedule for details on the first lecture (over Zoom).
EECS 482 is an introductory course on operating systems at the senior undergraduate or first-year graduate level. The objective of the course is to teach the issues involved in the design and implementation of modern operating systems. The concepts in this course are applicable to many operating systems and hardware platforms. We will discuss examples that are drawn from historically significant and modern operating systems including MULTICS, UNIX, Mach, and Windows. We will cover topics such as processes and threads, concurrency and synchronization, CPU scheduling, virtual memory management, communication in distributed systems, secondary-storage management, and file systems.
For details, please visit EECS 482 course webpage.