CS5020 Advanced Distributed Systems

2025 Fall Syllabus

Instructors

Zhuozhao Li, 李卓钊

  • Office: RM 516, South Tower, CoE Building (工学院南楼516)
  • Office hour: Friday 16:00-18:00, or email to schedule an appointment.
Course Descriptions

This course 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, students will gain practical experience designing, implementing, and debugging real distributed systems.

Prerequisites: Computer Networks, Operating Systems, and/or programming maturity recommended.

Course Materials

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:

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

Note: Lectures and related materials are licensed for use under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License, attributed to Michael Freedman, Kyle Jamieson, and Wyatt Lloyd, Princeton University.

Course Workloads

There will be 4-5 programming assignments and one final examination.

Grading Policy (Tentative)
  • Programming assignments, 50%

  • Attendance and lab practice, 10%

  • Final exam, 40%

Academic Integrity/Academic Dishonesty

I expect students to be honest and not cheat on their assignments, project, or exams. Please refer to the plagiarism policy (IMPORTANT!!! Please READ carefully!!!) of CSE department for more details.

Don’t put your assignments or projects on any open-source website (e.g., Github). Otherwise, you have the same responsibility in case of plagiarism.

Course Policies
  • No late assignment will be accepted.
  • Unless some special situations (e.g., medical leave) which will be reviewed by all the instructors.
  • The following excuses will NOT be approved for late submissions: computer crashes, disk crashes, accidental file deletions, lab computer unavailability, and the like. There will be no reply for this sort of late assignment submission requests.
Schedule (Tentative)

Please refer to Blackboard for the lecture and lab materials.

Acronyms: PA = Programming Assignment, PROJ = Project

Week Date Contents Events
1 2025.09.10 [Lecture] Course overview
[Lab] Introduction to Go monitoring
 
2 2025.09.17 [Lecture] Network communication and Remote Procedure Calls
[Lab] Concurrency in Go, MapReduce
 
3 2025.09.24 [Lecture] Time and Logical Clocks
[Lab] RPCs in Go
PA1 out
4 2025.10.11 [Lecture] Distributed Snapshots
[Lab] Distributed Snapshots
 
5 2025.10.15 [Lecture] Eventual consistency, Bayou
[Lab] Bayou and Chord
PA1 due
PA2 out
6 2025.10.22 [Lecture] Peer-to-Peer Systems and Distributed Hash Tables
[Lab] TBD
 
8 2025.10.29 [Lecture] Replicated State Machines via Primary Backup
[Lab] TBD
PA2 due
PA3 out
9 2025.11.05 [Lecture] View Changes and Consensus
[Lab] TBD
 
10 2025.11.12 [Lecture] Consensus
[Lab] TBD
 
11 2025.11.19 [Lecture] Consistency Models
[Lab] TBD
PA3 due
PA4 out
12 2025.11.26 [Lecture] Scalable Causal Consistency
[Lab] TBD
 
13 2025.12.03 [Lecture] Atomic Commit and Concurrency Control
[Lab] TBD
PA4 due
PA5 out
14 2025.12.10 [Lecture] Distributed transactions
[Lab] TBD
 
15 2025.12.17 [Lecture] Reasoning about System Performance
[Lab] TBD
 
16 2025.12.24 [Lecture] Blockchains
[Lab] TBD
PA5 DUE