Distributed Algorithms (CS-451)

Master course, Fall 2023

Prerequisites: none.

Distributed algorithms are fundamental and ubiquitous in the modern computing landscape. In essence, these algorithms enable computing over several machines, in a local IP-like network, a cloud or in a P2P network. Failures are common and computations need to proceed despite partial failures of machines or communication links. This course will cover the foundations of reliable distributed computing with an emphasis on broadcast and agreement algorithms. The following video discusses the main topics investigated in the course.

Main topics of the course

Reliable channels, Failure detectors, Reliable broadcast, Causal broadcast, Total order broadcast, Consensus, Terminating reliable broadcast, Atomic commit, Virtual synchrony, Byzantine agreement, Blockchain, Distributed machine learning

Moodle

The course page is available on Moodle. We encourage students to register on Moodle, in order to get all the course announcements by email. Furthermore, students can use Moodle to ask questions about the exercise sessions and/or the project. All course updates will be posted exclusively on Moodle.


Slides from the course (2024)

Introduction: PDF
Reliable Broadcast: PDF
Causal Broadcast: PDF
Total Order Broadcast: PDF
Consensus: PDF
Consensus with Byzantine failures and asynchrony (by Pierre Civit): PDF
Terminating Reliable Broadcast: PDF
Distributed Systems Non-Blocking Atomic Commit: PDF
Group Membership and View Synchronous Communication: PDF
Byzantine-Robustness in Federated Learning (by Rafael Pinot & Nirupam Gupta): PDF
Proof-of-Work Blockchain Systems (by Matej Pavlovic): PDF
Old Algorithms for New Problems (by Adi Seredinschi) : PDF


Textbook

  • Rachid Guerraoui and Luis Rodrigues - Introduction to Reliable Distributed Programming, available at 'La Fontaine' (with a student discount) or at amazon.de.
  • Christian Cachin, Rachid Guerraoui and Luis Rodrigues - Introduction to Reliable and Secure Distributed Programming

Additional Material

  • We prepared a document describing the language used for module specification and implementation, the notion of layering, and the notion of process. (odt pdf)
  • A Latex sample for algorithm implementation can be found here: alg-sample.tex

Previous year recordings (2020)

Warning! Some of those videos might be outdated! Following them instead of the actual lectures is at your own risk.

Lecture Slides Exercises
Introduction Intro.pdf, video Logic101.pdf, Gossip.pdf, video
Reliable Broadcast Reliable Broadcast.pdf, video Reliable Broadcast.pdf, video
Causal Broadcast Causal Broadcast.pdf, video Causal Broadcast.pdf, video
Total Order Broadcast Total Order Broadcast.pdf, video Total Order Broadcast.pdf, video
Consensus Consensus.pdf, video Consensus.pdf, Consensus (part 2).pdf, video
NBAC & TRB NBAC.pdf, TRB.pdf, video NBAC&TRB.pdf, video
Group Membership & View Synchronous Communication Group Membership&View Synchronous Communication.pdf, video GM&VSC.pdf, video
Shared Memory Shared Memory.pdf, video Shared Memory.pdf, video,
Demystifying Bitcoin Demystifying Bitcoin.pdf, video No exercises yet
Planetary Scale Systems Planetary Scale Systems.pdf No exercises yet
Distributed Machine Learning Distributed Machien Learning.pdf No exercises yet
Byzantine Fault Tolerance No lecture slides yet No exercises yet

Invited lectures (2020)

Lecture Slides
Byzantine Fault Tolerance and Blockchains (By Dr. Marko Vukolić, IBM Research Zurich) BFT-and-Blockchains.pptx, video
Building the Internet Computer: A glimpse into an ambitious adventure (by Yvonne-Anne Pignolet, DFINITY) pdf, video
Beyond Blockchains (by Adi Seredinschi, Informal Systems) pdf, video (start at 0:47:40)
Real-Time Distributed Algorithms (by David Kozhaya, ABB) pptx
Architecture trade-offs in a planet-scale queueing system (by Manos Karpathiotakis, Facebook) pdf