Wednesday, Jan 26 lecture will be remote via Zoom. Please see Ed for a link to the live online lecture.

Course Description:

COS 418 covers the design and implementation of distributed systems. Students will gain an understanding of the principles and techniques behind the design of modern, reliable, and high-performance distributed systems.

Topics include server design, network programming, naming, concurrency and locking, consistency models and techniques, security, 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 in 418, students will gain practical experience designing, implementing, and debugging real distributed systems.

Prerequisites: COS 217 required. COS 316, COS 333, COS 318, and/or programming maturity recommended.


  • Instructors:
  • Lectures: Mondays and Wednesday, 3:30pm - 4:20pm. Mike Freedman.
  • Precepts:
    • P01: Wednesday, 7:30pm-8:20pm, Friend 007. Nanqinqin Li.
    • P02: Thursday, 10:00am - 10:50am, Friend 108. Dongsheng Yang.
    • P03: Thursday, 12:30pm - 1:20pm, Friend 110. Anja Kalaba.
  • Grading: midterm (25%), final (25%), programming assignments (50%)
  • Questions: Please use the class EdStem site.


There are no textbooks for this class. All materials will be covered in lecture, which students are strongly recommended to attend. There are several books that might be useful, however:

  • Distributed Systems: Principles and Paradigms. Andrew S. Tanenbaum and Maaten Van Steen. Amazon link
  • Guide to Reliable Distributed Systems. Kenneth P. Birman. Amazon link
  • The Go Programming Language. Alan A. A. Donovan and Brian W. Kernighan. Web page