Operating Systems

Next running

6 Jan - 13 Feb 2020
5:00pm-6:30pm Mon/Thu


San Francisco



Apply for this course

Operating systems—along with database management systems and compilers—are some 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 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.


  1. Process Execution and Scheduling
  2. Introduction to Operating Systems
  3. Programs and Processes
  4. File Systems
  5. Virtual Machines and Containers
  6. Lab: Implementing Containers
  7. Virtual Memory
  8. Inter-process Communication
  9. Lab: Improving IPC Patterns in a Client/Server System
  10. Concurrency
  11. Lab: Implementing a Ring Buffer
  12. Lab: Writing a Simple Shell

Projects and exercises

The practical component of this course consists of small tracing exercises to explore the design decisions of some modern operating systems.

Assumed knowledge

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_.

Available sessions

6 Jan - 13 Feb 2020
5:00pm-6:30pm Mon/Thu
San Francisco

This course will next be taught by

Oz Nova

Oz is the lead instructor at Bradfield, and most frequently teaches Algorithms and Data Structures, Computer Architecture, Databases, Operating Systems and Distributed Systems. Prior to co-founding Bradfield, he worked for a decade as a software engineer and engineering manager, including as CTO and Co-founder of Topguest (acquired by Switchfly) and Vida.com.