CS 343: Operating Systems, Winter, 2020

Instructor:Peter Dinda (Office Hours: Tuesdays 1-4, Mudd 3507 or by appointment, tentative)
Teaching Assistants: Brian Suchy (Office Hours: Mondays, 9-12, Mudd 3303 (or 3301) or by appointment)
Conor Hetland (Office Hours: Thursdays, 1-4, Mudd 3534 (or 3301) or by appointment)
Peer Mentor: Souradip Ghosh (Office Hours: Fridays, 11-2, Mudd 3532/3534 (or 3304), or by appointment)
Lecture:Tuesdays and Thursdays, 11-12:20, Tech M345
Optional Discussion:Wednesdays, 4pm, (Tech LR2 / Univerity Hall 122 - see Piazza for schedule)

This is a newly redesigned course. It shares very little with the previous versions of CS 343, except, of course, OS principles. The textbook is different and the labs have been newly developed and are Northwestern-specific.

CS 343 satisfies one of the systems breadth, tech elective, or project requirements within the Computer Science major. It can also be taken for credit within the CE major.


We will use Canvas to report grades, but for nothing else. For critical announcements, we will send email to the addresses that CAESAR maintains.

For discussion, we will use Piazza: CS 343 Piazza Site. Directing your questions to Piazza will likely produce the fastest response, and everyone else in the class will also benefit. Piazza is configured to allow anonymous posting.

Accounts, Remote Access, Getting Started with Unix

  • You will have a Linux account on the Wilkinson lab, which is very convenient for working together. Mostly, though, you'll be using those machines as terminals. You should also be able to use NUIT labs near Tech (i.e., in Mudd.)
  • You will also have a Linux account on private servers we have set up. These accounts will be discussed in class and on Piazza.
  • It is possible to set up your own machine to do the labs. More info is on Piazza.
  • All lab handouts and handins will be handled via GitHub Classroom. You should be sure to sign up for a GitHub account if you don't already have one. The details of using GitHub Classroom will be discussed in class and on Piazza.
  • Handouts

  • Syllabus (pdf)

  • Concurrency (pdf)
  • Workload Characterization (pdf)
  • Queueing Theory and Scheduling (pdf)
  • THERAC-25 (article scan, searchable version)
  • Mars Pathfinder (classic detailed account, nice recent summary )
  • Meltdown/Spectre (Full Site, Good Blog Post)
  • Unix Systems Programming In A Nutshell (pdf)
  • Labs

  • Getting Started Lab (pdf) (Out: 1/7, In: 1/14)
  • Producer-Consumer Lab (pdf) (Out: 1/14, In: 1/28)
  • Queueing/Scheduling Lab (pdf) (Out: 1/28, In: Changed to 2/13)
  • Device Driver Lab (pdf) (Out: 2/13, In: 2/27)
  • Paging Lab (pdf) (Out: 2/27, In: 3/12)
  • Exams

  • Midterm: Tuesday, February 11, 6pm, Annenberg G15
    Covers lectures 1-10 and related reading/materials in syllabus
    Midterm Review Session: Monday, February 10, 6pm, Annenberg G15
  • Final: Wednesday, March 18, 9am, Tech M345
    Covers lectures 11-20, and related reading/materials in syllabus
    Final Review Session: Monday, March 16, 6pm, Tech M345
  • Resources

  • Make Introduction (pdf)
  • Gdb commands (pdf)
  • Gdb manual (html)
  • The Intel Architecture Manuals and the AMD Architecture Manuals
  • See also the materials from CS 213