University of California, Santa Cruz, Spring 2025
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:We may have multiple lectures on a topic.
Please read the slides and suggested reading before the lectures.
In order to best observe the animations in the slides,
view them in the “Single page” view rather than “Continuous scroll”
view.
The class is automatically recorded and you can view the recordings in the class channel on Yuja.
Hambazi: Spatial Coordination Synthesis for Augmented
Reality
OOPSLA ’25 (ACM SIGPLAN conference on Object-oriented Programming,
Systems, Languages, and Applications)
Yi-Zhen Tsai, Jiasi Chen, Mohsen Lesani
Paper, BibTex, More
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)
Atomic cross-chain swaps
Maurice Herlihy
PODC 2018 (ACM symposium on principles of distributed computing.
2018)
Other papers:
A comprehensive study of Convergent and Commutative Replicated
Data Types.
M. Shapiro, N. Preguica, C. Baquero, M. Zawirski.
Doctoral dissertation, Inria–Centre Paris-Rocquencourt; INRIA
2011
Deconstructing Stellar Consensus.
A. G. Perez, M. A. Schett
OPODIS 2019.
We post the assignments on
Canvas
and you submit your solutions on
Gradescope.
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.