This is the archived Fall 2013 version of the course. For the most recent version, see

Class 12: Synchronization

Action Items

Problem Set 3 is now posted: It is due Monday, 28 October. PS3 is more challenging than PS2, and provides many opportunities for doing exciting things beyond the minimum acceptable solution. Please don't wait to get started on it.

Everyone should have made some claim on a Norvig Number by now. If you haven't, you should claim the number you want to work on by posting in the forum.

The midterm exam will be posted on Thursday, 10 October (shortly after class) and due on Monday, 14 October (11:59pm). It will be open resources (except for other humans) and untimed. You should not be surprised if questions from the notes appear on the midterm. It is fine (and encouraged!) to discuss those questions in the course forum before the midterm is posted (but not during the midterm).

First Three Files

What three files should be in every project repository you create? (and why?)


Sequential programs give us a total ordering of program events. Concurrent programs give us a partial ordering.

What is the difference between a patial ordering and a total ordering?

What is a race condition?

What causes a deadlock?

Multi-Rustic MapReduce

Alexander Lamana, Jasdev Singh, Nishant Shukla, and William Thomason solve the Multi-Threaded MapReduce challenge!

Their code will be linked here soon.


  • Challenges
  • Course Wrapup
  • Final Projects
  • Final Survey
  • Getting Started with Github
  • IRC
  • Problem Set 3 - Zhtta Server - Benchmarking
  • Project
  • Project Ideas
  • Problem Set 1 - zhttpto Web Server
  • Comments on PS1 Comments
  • Problem Set 1 Reference Solution
  • Problem Set 2 - The Good Auld Shell
  • Problem Set 3 - Zhtta Server
  • Page Removed
  • Schedule
  • Enrolling for Spring 2014
  • Syllabus
  • Using Materials
  • Using Rust for an Undergraduate OS Course
  • VirtualBox
  • Working on Github in cs4414