CS170: Operating Systems (undergrad)

Class information


Description and goals

We hope you learn three sets of interrelated things. The first thing is how computers work. Students graduating with CS degrees should believe "there is no magic": they should be able to describe the chain of events that occurs when they hit a key and cause a letter to appear on the screen from the register level (or logical gate level or transistor level) to the system architecture level to the operating system level to the application level. This is philosophically important, but it is also of practical interest to developers who need to figure out how to make a system do what they want it to do.

The second goal is for you to learn the core ideas in operating systems: concurrent programming, memory protection, virtual addressing, file systems, scheduling, etc. Often, such ideas are best explained as abstractions that some software layer (usually the operating system) provides above imperfect hardware to make that hardware usable by programmers and users. The intent is for you to understand such abstractions well enough to be able to synthesize new abstractions when faced with new problems.

Many of the ideas and abstractions that we will cover are relevant not only to operating systems but also to large-scale systems. Thus, a third goal of this course is to enhance your ability to understand, design, and implement large-scale systems.

The coding workload in this class will be substantial. This is a necessity: understanding many of the ideas above requires implementing them or working through them in code. The good news is that if things go according to plan, you will learn a lot in this class, and ideally find it rewarding. For example, you will learn how operating systems are implemented, and how to effectively use the abstractions exported by operating systems.

Course content



We will follow Operating Systems: Three Easy Pieces (OSTEP), edition 0.90, by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. This book is freely available online, at the link given. Besides this required text, we suggest several other books for reference:


Much of the course material (including course description, labs, and lecture content) is taken as-is from Michael Walfish's OS course at NYU. We are also indebted to the staffs of the ancestors of Mike's course at MIT, UCLA, Harvard, Stanford, and UT Austin (cs372h, cs372, and cs439 a, b, c). This site relies on software to generate course Web pages, developed by Dave Andersen and Nick Feamster.

Last updated: 2020-10-05 15:43:33 -0700 [validate xhtml]