Course Information

Final exam solutions are now posted! You can find them here.

In this class, you'll have the opportunity to learn both the overarching principles of operating systems as well as the intricacies of how they work.

We'll cover topics including multithreaded programming; managing threads, interrupts, and storage; processor scheduling; operating system structure; virtualization; security; and the design of both local and distributed file systems. You'll develop your skill as a C programmer while simultaneously learning what goes on inside your computer from the moment you power it on.

If you choose to take the class, you'll complete four programming assignments, four written assignments, a midterm exam, and a final. In addition, lecture will involve the use of an iClicker to answer multiple choice questions.

As part of the class, you may choose to take the (optional) half-credit lab, CS169. If you do so, you will attend the same lectures and complete the written assignments and exams as usual. However, you will only complete the first two programming assignments from CS167, before embarking on an in-depth project wherein you build much of the functionality of a small operating system called Weenix. It is a significant time investment, and you'll still get a lot from the class if you don't take the lab. Some thoughts on taking CS169 from previous students can be found here.


Meeting Times

CS167 is held Monday, Wednesday, and Friday from 2:00 to 2:50 PM in CIT 368.

CS167 will have occasional help sessions on Tuesday and Thursday evenings, from 7:00 to 9:00 PM.

CS169 will have occasional help sessions on weekday evenings, from 8:00 to 9:00 PM.


CS33, or permission of the instructor.


Operating Systems in Depth, by Doeppner, Wiley 2011.
ISBN: 978-0-471-68723-8