General Information

    When and Where: Tues/Thur, 2-3:15PM, CHEM 1171

    Professor: Ben Zhao, ravenben at

    TAs: Tanuj Mittal, Ravi K. S. Babu

    Reader: Darshan Maiya


    • Mondays 5-5:50PM, GIRV 1112
    • Mondays 6-6:50PM, GIRV 1112

    Office Hours:

    • Ben: Tues 1-2pm @ my lab: Phelps 3534
    • Ravi: 12:45-1:45PM, Tues/Thur, GSL
    • Tanuj: 11AM-1PM, Mondays, TA trailer

    Piazza Class Page: CS170

    Prerequisites: CS130A/125 and CS/ECE 154


This course focuses on the study of Operating System design and implementation, and serves as an introduction into the study of computing systems. Main topics include: processes; interprocess communication and synchronization; input-output, file systems, memory management and networking. The class itself has two main components, a design side that will be emphasized in lectures, and an implementation side that will be explored through several programming projects. The programming component of the course should build upon your previous experiences in CS130 or CS125 and give you a real taste of systems programming. I will hold weekly office hours (Tues 11-noon) in order to answer questions on the materials covered in class and the exams. The TAs will handle detailed questions on projects and provide additional discussions on class material.

I will cover all of the course material in class in a presentation form, and will put the notes online in PDF format before the start of each lecture. Feel free to print them out and mark your notes on them. Doing so will save you time from copying down basic terminology, allowing you to instead focus on understanding the material instead of working as a recorder during lecture. PLEASE finish the required reading before coming into lecture. I will lecture assuming you have read the material, and skipping reading assignments will just make it harder for you to keep up in lectures.

Textbook: Operating Systems: Principles and Practice, by Tom Anderson and Mike Dahlin, Recursive Books, 2nd Edition, August 2014.

Optional Reference: Operating Systems: Design and Implementation (the Minix book), by Andrew Tanenbaum, Prentice Hall, any recent edition.

Topics: Here is a rough list of some of the topics we'll cover in lecture. Topics vary in depth and detail of coverage.

  • Introduction to Operating Systems
  • Computer System Structures
  • Operating System Structures
  • Process /Thread Management
  • CPU Scheduling
  • Process Synchronization / Deadlocks
  • Memory Management / Virtual Memory
  • File Systems / Secondary Storage
  • Security / Protection

Class Quizzes
Class participation is a critical part of your evaluation in the course.  This means coming to class and actively learning the material.  To encourage (on-time) attendance to each class, I will be scheduling a sequence of roughly 5 short quizzes throughout the quarter. These quizzes are scheduled more or less randomly, and generally include a single straight-forward question on material from the previous lecture.  Missing a lecture day when a quiz is announced means a zero score on the quiz.  Note that quizzes are more likely to be announced on days when fewer students show up at lecture. 

Grading Policy

The grading for 170 will come from two exams, four programming projects on the MINIX operating system, and 5-7 in-class quizzes. For the MINIX projects, you will learn to extend the functionalities of a real operating system. For all projects except for Project 0, you will be working in groups of two.

Projects (4) = 50%
Midterm Exam = 20%
Midterm Exam #2 = 20%
Class Quizzes (5-7) = 10%