Princeton University
Computer Science Department

Computer Science 318
Operating Systems

Jaswinder P. Singh
Mohammad Shahrad

Fall 2020

General Information | Schedule | Projects | Policies

Course Summary

An introduction to operating systems. Emphasis is on the fundamentals of how to design and implement an operating system. Topics include operating system structure, processes, threads, synchronizations, concurrent programming, interprocess communications, virtual memory, I/O device management, and file systems.

Administrative Information


Monday & Wednesday, 11:00am - 12:20pm [Zoom link available on course Canvas]


Monday, 7:30pm - 8:20pm

Tuesday, 7:30pm - 8:20pm


Name Email Office hours
Prof. Jaswinder P. Singh
Dr. Mohammad Shahrad Tue: 4:00pm - 5:00pm / Thu: 11:00am - 12:15pm

Graduate Teaching Assistants:

Name Email Office hours
Ben Burgess Tue: 12:00pm - 2:00pm / Wed: 3:00pm - 5:00pm
Samuel Ginzburg Tue: 9:00am - 11:00am / Fri: 2:00pm - 4:00pm
Jianan Lu Mon: 5:00pm - 7:00pm / Wed: 5:00pm - 7:00pm
Lucas Salvador Tue: 2:00pm - 4:00pm / Thu: 2:00pm - 4:00pm

Undergraduate Teaching Assistants:

Name Email
Jerry Huang
Joseph Kim
Julian Knodt
Frankie Lam
Sean-Wyn Ng
Nick Sum
Christopher Ye
Emily Yin


COS 217 & 226 or instructor's permission.


Andrew S. Tanenbaum and Herbert Bos, Modern Operating Systems, 4th edition, Prentice Hall, 2014.

Course Reserves and Online Materials

Frank Van Gilluwe, The Undocumented PC : A Programmer's Guide to I/O, CPUs, and Fixed Memory Areas. On reserve in Engineering Library.

Tom Shanley, Protected Mode Software Architecture / MindShare, Inc. On reserve in Engineering Library.

IA-32 Intel Architecture Software Developer's Manual, Volume 3: System Programming Guide.


The main venue for course questions and discussions will be Piazza. Enroll here.

All students need to enable their UNIX accounts. Instructions can be found here.