Fall Semester 2016

September 1, 2016 – December 22, 2016

Welcome to Operating Systems

You're in the right place if you want to improve your systems-level ("low-level") development skills. We'll dive down all the way to where ugly hardware meets ugly software in order to (hopefully) produce beautiful, efficient, stable, and secure systems for users. Abandon all hope ye who enter here? We'll see...


Catalog Description: This course covers the fundamental topics related to operating systems theory and practice. Topics include processor management, storage management, concurrency control, multi-programming and processing, device drivers, operating system components (e.g., file system, kernel), modeling and performance measurement, protection and security, and recent innovations in operating system structure. Course work includes the implementation of operating systems techniques and routines, and critical parts of a small but functional operating system.

Prerequisite(s): 600.120: Intermediate Programming, 600.226: Data Structures, 600.233: Computer Systems Fundamentals. (600.211: Unix Systems Programming is helpful as well.) Participants must be familiar with the UNIX environment and must be fluent in the C programming language. The course includes significant programming projects; without prior development experience you'll probably get lost in a maze of low-level code.

Policies: Please read the general course policies and take them to heart. Additional policies specific to this course may be posted at a later date.


  1. Understand and modify a complex software system in small teams.
  2. Understand the hardware / software tradeoffs involved in OS implementation.
  3. Practice advanced systems programming in C and x86 assembly language.
  4. Understand fundamental OS abstractions such as threads, address spaces, interprocess communication, device drivers, file systems.


Lecture: Monday, Wednesday, Friday, 10:00 am – 10:50 am
Location: 300 Shaffer Hall

Midterm Exam: Monday, October 10, 10:00 am – 10:50 am
Final Exam: Friday, December 16, 2:00 pm – 5:00 pm

Text Books (recommended, not required)



Please check the individual assignments for due dates and the structure your solutions should have. See our Piazza site for detailed submission instructions.

If you have an opinion on these assignments, be it good or bad, please let us know about it. We're always trying to make these things more enjoyable (if that's an applicable term? :-).


"The first rule of Operating Systems is: there are no operating systems!"Peter H. Fröhlich, 2011/02/27

"LFS is the most exciting assignment ever: at every step I risk hosing my computer completely." — anonymous student, 2012/02/08

"I was not planning on using LFS as my regular OS. But now, given my time investment, I am starting to reconsider." — anonymous student, 2012/02/09