14-736: Distributed Systems: Techniques, Infrastructure, & Services

14-736: Distributed Systems: Techniques, Infrastructure, & Services

Course Description:
This course explores both foundational and contemporary topics in distributed systems, such as communication, coordinating time, synchronization, consensus, impossibility of agreement, replica management, file systems, distributed SQL and noSQL databases, CAP, ACID, BASE, distributed hashing, anonymous communication, models of computation, and higher-level tools. The course project work focuses on the implementation of scalable, fault-tolerant distributed systems.

Evaluation & Grading:
Students will be individually evaluated on all course deliverables. Contributions to the final grade will be ~70% for lab and project work and ~30% for quizzes and exams.

Prerequisites:
The official prereq is 14-513/15-513, but any advanced systems or networking course should provide sufficient background, and this prerequisite is not enforced in such cases.
Students will need to have (or gain) advanced knowledge of Java or Go.
Contact the instructor directly with questions about prerequisites.

Textbooks:
Optional textbook: Tanenbaum and van Steen, Distributed Systems: Principles and Paradigms.
Other references for background reading can be suggested upon request.

Deliverables:
Labs: A sequence of labs will be used to give hands-on experience with key technologies for distributed systems. Labs will be completed by teams of two students, and teams can choose from multiple programming languages to complete the lab deliverables.
  • Lab 0 (due week ~2): implementation of a multi-threaded game server to practice network programming, concurrency, and resource management
  • Lab 1 (due week ~5): creation of a generic library for creation of remote procedure interfaces
  • Lab 2 (due week ~8): implementation of the Raft consensus algorithm using the remote library
  • Lab 3 (due week ~11): creation of a simple distributed file system using RESTful APIs
  • Lab 4 (due week ~14): design and implement a system of your choice
Quizzes and Exams: A sequence of quizzes and exams will be used to gauge mastery of key concepts covered in the lecture and lab material. These are done individually.