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.
Last updated: 2018-09-11 11:05:18