Distribution is ubiquitous in modern computing systems. For example, today’s telephone systems, banking systems, global information systems, and aircraft and nuclear power plant control systems all depend critically on distributed algorithms. Robust distributed algorithms should offer reliability and security despite process failures, network disconnections, or even malicious attacks on processes. This course will introduce fundamental distributed computing problems and provides a collection of applicable algorithms. It also presents formal specification and rigorous reasoning about distributed algorithms. The course follows a modular and layered approach to the implementation of distributed abstractions. It covers reliable broadcast, causal broadcast, total-order broadcast, distributed shared memory, consensus variants including blockchain consensus, atomic commit and terminating reliable broadcast, and replicated systems. The course considers processes that are subject to crashes and also malicious attacks by non-cooperating processes.
In this course, we will have both lectures by the instructor, and presentations by students. The presenter presents a paper or related papers and leads the discussion.
Textbook:
Introduction to Reliable and Secure Distributed Programming
Christian Cachin, Rachid Guerraoui, Luís Rodrigues
Second Edition, Springer, 2011, XIX, 320 pages, ISBN-13: 978-3-642-15259-7
Hamsaz: Replication Coordination Analysis and Synthesis
Farzin Houshmand, Mohsen Lesani
POPL ’19 (ACM SIGPLAN Symposium on Principles of Programming Languages)
Hambazi: Spatial Coordination Synthesis for Augmented Reality
Yi-Zhen Tsai, Jiasi Chen, Mohsen Lesani
OOPSLA ’25 (ACM SIGPLAN conference on Object-oriented Programming, Systems, Languages, and Applications)
Hamraz: Resilient Partitioning and Replication
Xiao Li, Farzin Houshmand, Mohsen Lesani
S&P ’22 (IEEE Symposium on Security and Privacy)
Deconstructing Stellar Consensus.
A. G. Perez, M. A. Schett
OPODIS 2019.
Atomic cross-chain swaps
Maurice Herlihy
PODC 2018 (ACM symposium on principles of distributed computing. 2018)
Evaluation
We post the assignments on Canvas and you submit your solutions on Gradescope.
Four Assignments: 10% each
Written Assignment 1: Release: April 8, Submission: April 15
Written Assignment 2: Release: April 29, Submission: May 6
Programming Assignment: Release: May 6, Submission: May 29
Written Assignment 3: Release: May 27, Submission: June 3
Midterm Exam: 30%
May 20 in the class
Presentation and discussion: extra credit
Four presentations in the last week, June 3 and 5
Final Exam: 30%
Finals week, June 11, 4-7pm, in the class
We keep track of attendance, and only those that attend regularly will get their grades scaled.
Academic Integrity
One of the joys of university life is socializing and working with your classmates. We want you to make friends with each other and discuss the material. That said, I expect all assignments (code, write-ups, and tests) to be your own original work. If you work together with a classmate on an assignment, please mention this, e.g. in the comments of your code. If you use a figure you didn’t create in a write-up, then it needs a citation. Please review the university’s policy on plagiarism. This class has a zero-tolerance policy on cheating. Please don’t do it.
As a final note on cheating: the economic condition facing computer science graduates is volatile in the near future. It is crucial that you benefit from your time at the university, and learn the concepts thoroughly. If you cheat, you will not be able to stand out from others who put in the effort when it comes time to find a job. Cheating will have a devastating impact on your own career opportunities. Just don’t do it.
We are in an exciting time for AI, especially for tools like Github co-pilot and LLMs (e.g., ChatGPT). These tools have incredible potential and they are improving every day. However, the educational community has not had sufficient time to understand their impact on learning objectives. This class has been designed to be taken without the use of AI tools. They are not allowed to be used in the course. If we suspect abuse, then we may implement random audits of assignments, where you will be asked to explain your implementation in detail. If you are interested in seeing how these tools can help, please feel free to use them after you have submitted a non-AI version of the homework.