Latest Announcements

12/04: Lecture 21 is uploaded
12/04: HW 4 and 5 are posted
11/29: Lecture 20 is uploaded
11/27: Lecture 19 is uploaded
11/15: Lecture 18 is uploaded
11/13: Lecture 17 is uploaded
11/01: Lecture 16 is uploaded
10/30: Lecture 15 is uploaded
10/25: Lecture 14 is uploaded
10/19: Lecture 13 is uploaded
10/11: Lecture 11, 12 are uploaded
10/09: HW 3 solution is posted
10/04: Lecture 10 is uploaded
10/02: Lecture 9 is uploaded
10/01: HW 2 solution is posted; HW 3 is out
09/28: Lecture 8 is uploaded
09/25: Lecture 7 is uploaded
09/24: HW 1 solution is posted; HW 2 is out
09/20: Lecture 6 is uploaded
09/18: Lecture 5 is uploaded
09/13: Lecture 4 is uploaded
09/11: Lecture 3 is uploaded; Homework 1 is out
09/06: Lecture 2 is uploaded
09/04: Lecture 1 is uploaded
08/17: Course website is up

Course Overview

This course gives an introduction to the basic concepts and core principles used to structure modern computer operating systems. The goal of the class is to explain those concepts and principles that are likely to survive for many years to come. The course is a departure point for research in operating and distributed systems. Specifically, the course introduces the concepts of processes, concurrency, synchronization, scheduling, multiprogramming, memory management, and file systems.

600.120 (Intermediate Programming), 600.211 (Unix Systems Programming), 600.226 (Data Structures), 600.233 (Computer Systems Fundamentals). This course involves significant kernel programming tasks. You should: 1). be comfortable and fluent in programming in low-level languages (C and x86 assembly in particular); 2). have experiences of developing in UNIX environment.



Ryan Huang
Address: Malone 231
Phone: (410) 516-4522
Office Hours: Tue 3-4pm, Thu 10:30-11:30am, Malone 231 (or by appointment)


Chang Lou
Office Hours: Mon 4-5:30pm, Wed 3:30-5pm, Malone 122 (ugrad lab)


Will Pryor
Office Hours: Thu, Fri 5-6:30pm, Malone 122 (ugrad lab)

Zach Silver
Office Hours: Tue 5-6:30pm, Thu 3:30-5pm, Malone 122 (ugrad lab)

Staff list


Lecture: Tuesday/Thursday 01:30pm-02:45pm, Shaffer Hall 100
Midterm Exam: Oct 23rd, Tuesday 01:30pm-02:45pm, Shaffer Hall 100
Final Exam: Decemeber 21st, Friday 09:00am-12:00pm, Shaffer Hall 100

Project Discussion Section:

  • Lab 0 Overview — 09/07 Fri 10am, Malone G33/35
  • Lab 1 Overview — 09/18 Tue 5pm, Malone G33/35
  • Lab 2 Overview — 10/03 Wed 3:30pm, Malone G33/35
  • Lab 3 Overview — 10/26 Fri 5pm, Malone G33/35
  • Lab 4 Overview — 11/16 Fri 5:30pm, Malone G33/35



Operating Systems: Three Easy Pieces

by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, available online for free!

Other recommended textbooks:


This course is organized as a series of lectures taught by the instructors, assigned readings, discussion sections, homework, projects, and exams. They are complementary to each other, helping you reinforce learning on the core concepts in operating systems. Questions on examinations will be based on material covered in class, assigned readings, and projects.

Lectures: Core material of the course.
Readings: The textbook and supplementary readings provide references to lectures, and are good preparations before class. But they are not a substitute for the lectures. In other words, you should come to class.
Projects: Five programming assignments, each completed individually or in groups (of no more than 3). They are essential for you to turn the theories you learned into practices.
Homework: Optional homework questions for exam preparation (not to be turned in)
Exams: Midterm examination and a final exam


Your final grade for the course will be based on the following weights:

  • Projects: 50%
  • Midterm: 15%
  • Final exam: 35%

For the programming assignments, there are no partial credits. You must turn in working code.


Unless otherwise noted, all work must be completed individually. Homework assignments (if any) may be discussed, but solutions must be completed individually. Projects may be completed in established groups, and implementation approaches may be discussed across groups, but programming code cannot be shared across groups.
Don’t do it. All students are required to know and adhere to the JHU CS Department Academic Integrity Code and university policies. Failure to do so will result in serious consequences outlined in the policy. Simply stated, do no cheat. The consequences are very high for the time/effort saved.


The course syllabus, lecture and project materials are heavily influenced by UCSD CSE 120 and Stanford CS 140 class. Credits are particularly due to Geoff Voelker (UCSD), Yuanyuan Zhou (UCSD), and David Mazières (Stanford).