CS-240, Fall 2017: Computing Systems and Concurrency

Latest Announcements

11/8: Assignment 4 is out.
10/15: Assignment 3 is out.
9/20: Assignment 2 is out.
9/18: Lab 1 is out.
8/27: Assignment 1 is out.
8/15: Course starts on Sunday, Aug 20, 2:30-4:00pm.
Lectures start on Sunday, Aug 27.

See all announcements


This course covers introductory material on the design and implementation of computer-based systems, with an emphasis on. distributed systems. Students will gain an understanding of the principles and techniques behind the design of modern, reliable, and high-performance systems. Topics include server design, network programming, naming, transactions, concurrency and locking, consistency models and techniques, security, data-intensive computing and fault tolerance. Modern techniques and systems employed at some of the largest Internet sites (e.g., Google, Facebook, Amazon) will also be covered. Through programming assignments, students will gain practical experience designing, implementing, and debugging real distributed systems.

Prerequisite: equivalent of an undergraduate course on operating systems (or computer system architecture or concurrency control). Good programming skills. Knowledge and comfort with systems programming.

This course draws heavily from Princeton COS-418. This class owes most of it contents to Michael Freedman and Kyle Jamieson who developed much of the course material and released it under Creative Commons license. It is with great admiration and thanks that we are using it.



No textbook is required for this class. We will make course material (slides, notes, readings) available from this website and point out relevant references widely available. The following textbooks may be used for supplementary course material or as references for optional reading. Additional online references: Go reference:

Last updated: 2017-11-8 16:52:12