This course is an in-depth study of important concepts and techniques found in modern computer operating systems. An undergraduate course in operating systems is a prerequisite. The course focuses on in-depth study of such important issues as virtual memory, filesystems, networking, and multiprocessor support, with an eye to recent directions in these areas. Textbook readings are supplemented, where appropriate, by papers from the research literature. An important part of the course is the case study of an actual operating system. Students study the source code for this operating system, and do programming exercises and projects that involve modifying the operating system and measuring its performance.