CS 343: Operating Systems, Winter, 2021

Instructor:Peter Dinda (Office Hours: Thursdays, 3:30-6:30, Zoom, or by appointment)
Teaching Assistants: Mike Wilkins (Office Hours: Mondays, 2-5, Zoom, or by appointment)
Madhav Suresh (Office Hours: Wednesdays, 3-6, Zoom, or by appointment)
Peer Mentors: Michael Cuevas (Office Hours: Fridays, 11-2, Zoom, or by appointment)
Siyuan Chai (Office Hours: Tuesdays, 2-5, Zoom, or by appointment)
Lecture:Tuesdays and Thursdays, 11-12:20, Zoom
Optional Discussion:Wednesdays, 6pm, Zoom

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.

Note that because of COVID, we have a shortened quarter (9 weeks instead of 10). As a consequence, things might change, and there is at least some material that we will not be covering at all.


We will use Canvas to report grades, and for access to Zoom and Zoom Recordings, 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. Note that Piazza is changing their business model, which may have consequences for this class (for example, you might see advertising). Please let us know if you have issues with Piazza.

Accounts, Remote Access, Getting Started with Unix

  • You will have a Linux account on the Wilkinson lab.
  • 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)
  • I don't use slides. You are welcome to check out Branden Ghena's Slides from Fall Quarter.


  • Getting Started Lab (pdf) (Out: 1/12, In: 1/19)
  • Producer-Consumer Lab (pdf) (Out: 1/19, In: 2/2)
  • Queueing/Scheduling Lab (pdf) (Out: 2/2, In: 2/16)
  • Device Driver Lab (pdf) (Out: 2/16, In: 3/2)
  • Paging Lab (pdf) (Out: 3/2, In: 3/16)
  • Exams

  • Midterm: Wednesday, February 10, Details in Piazza/Email
    Covers lectures 1-8 and related reading/materials in syllabus
    Midterm Review Session: Tuesday, February 9, 2pm (on Zoom and will be recorded)
  • Final: Wednesday, March 17, Details in Piazza/Email
    Covers lectures 9-18, and related reading/materials in syllabus
    Final Review Session: Monday, March 15, 5pm (on Zoom and will be recorded)
  • 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
  • Last modified: Wed Mar 10 16:00:15 CST 2021