One the most complex software systems ever assembled, the modern operating system serves as the interface between the human and the machine. This course traces how the simple idea of ``resource sharing'' unravels into some of the most confounding problems and original breakthroughs in computer science. Course topics include process and thread management, input/output, CPU scheduling, synchronization primitives, memory management, and file systems. Students taking this course learn how to deal with the intricacies of low-level programming, parallel computing and synchronization problems, and also receive kernel-development experience through the design and implementation of various subsystems in a real operating system. The C programming language is used for homework assignments and projects.
Prerequisites: CSCI 281 with a grade of C- or higher.