Operating Systems

The operating system—along with the virtual machine or compiler—is one of the most sophisticated programs that software engineers utilize.

Understanding the operation of operating systems is one of the most reliable ways to increase the effectiveness, performance and security of one’s programs. Yet many engineers expect to come to learn about their operating systems by osmosis, not taking the time to understand this important piece of software in its own right. We feel that this is an unfortunate oversight.

Our course focuses on the four topics that we feel are most empowering for practicing software engineers: CPU virtualization, virtual memory, coordination and persistence. The scope of the course is to provide students with a strong mental model of these concepts to take back to their userland programs.

Topics covered

  • The role of operating systems and the syscall interface
  • CPU virtualization: processes and threads, context switches and scheduling strategies
  • Memory virtualization: segmentation and paging, multi level page directories and hardware support
  • Coordination: interprocess communication and semaphores
  • Persistence: storage devices and file systems


This course assumes strong programming abilities, and some familiarity with C. Students are advised to be familiar enough with C to say solve an exercise in K&R C without much outside assistance. We suggest that students without an undergraduate computer science background take our Computer Architecture course before undertaking Operating Systems.

Schedule and fees

This course is next scheduled to run in June, 2017. The total price is $1,800.


San Francisco, California
© 2016 Bradfield School of Computer Science