Operating Systems

If you want to travel around the world and be invited to speak at a lot of different places, just write a Unix operating system.
— Linus Torvalds

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 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. Introduction to operating systems
  2. Introduction to processes and the process API
  3. Scheduling strategies
  4. Introduction to memory virtualization
  5. Paging and how to make it work
  6. Concurrency
  7. I/O devices, hard disks and flash based SSDs, and introduction to file systems
  8. File systems

Projects and exercises

The practical component of this course consists of small tracing exercises to explore the design decisions of some modern operating systems, as well as mini projects to add features to a modernized port of Version 6 Unix called xv6.

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.

Schedule and price

This course will next run 5:30pm-8:00pm Tuesdays and Fridays from 7-31 August 2018. The total price is $1,800.

Apply now Still have questions? Contact us.
Taking Bradfield’s Operating Systems course gave me a much deeper understanding of the underlying concepts and principles at work in modern computers. Understanding these abstractions helps me digest new technical information and ultimately make more informed decisions. If you’re looking for a way to level up your technical skills, I would highly recommend taking this course.
James Vanneman portrait
James Vanneman, Software Engineer at Microsoft

[email protected]
576 Natoma St
San Francisco, California
© 2016 Bradfield School of Computer Science