2022 Distributed Algorithms

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Graduate major in Computer Science
Defago Xavier 
Class Format
Media-enhanced courses
Day/Period(Room No.)
Mon7-8()  Thr7-8()  
Course number
Academic year
Offered quarter
Syllabus updated
Lecture notes updated
Language used
Access Index

Course description and aims

Distributed algorithms form the basis of cloud computing systems and networked applications. The primary objective of this course is to present the basic concepts, theory, and techniques that are at the heart of distributed systems.
As much as possible, the course tries to relate algorithms and their proofs, with practical implementations, by interleaving coursework with occasional practical exercises.
This course extends basic lectures on operating systems concepts (in particular about concurrency) and presents the fundamental aspects of distributed algorithms, such as causality, resource allocation, the evaluation of global predicates, and message ordering, as well as the most common approaches used to solve them.

Student learning outcomes

Upon completing this course, the student will be able to understand how distributed systems work and what problems these systems need to address. This understanding will be a useful tool to formalize ideas and acquire a sharper and deeper understanding of the issues involved in more specific areas of asynchronous concurrent systems, such as cloud computing systems, peer-to-peer systems, cluster computing, IoT, system-on-chip, etc.
In addition and more importantly, the student will acquire a modular view of algorithms by being able to decompose classical algorithms into their basic parts and recombine them to address new problems or new environments.
At the end of the course, the student should be able to read and quickly understand most of the recent literature on distributed algorithms.


Distributed algorithms, message-passing, network topology, synchrony models, global states, logical time, resource allocation, termination detection, randomized algorithms

Competencies that will be developed

Specialist skills Intercultural skills Communication skills Critical thinking skills Practical and/or problem-solving skills

Class flow

Typical classes will combine slide-based presentations, interactive discussions, and practical programming exercises. Active contribution to class discussions will be strongly encouraged. To prepare for class, students should read the course schedule section and check what topics will be covered. Required learning should be completed outside of the classroom for preparation and review purposes.

Course schedule/Required learning

  Course schedule Required learning
Class 1 Introduction to distributed algorithms - Nature and purpose of a distributed system. How to express distributed algorithms and prove their correctness. - Preparation and settings of the programming environment. instructed in class.
Class 2 Network traversal algorithms - Discovery of the communication graph - Parallel traversal, spanning tree, depth-first traversal. instructed in class.
Class 3 Distributed graph algorithms (I) - Distributed shortest path - Distributed graph coloring - Maximal independent set instructed in class.
Class 4 Distributed graph algorithms (II) - Computing a global function, Distance-vector routing - Finding cut vertices instructed in class.
Class 5 Distributed mutual exclusion - Mutual exclusion problem, permission-based algorithms, edge-reversal - Quorum construction instructed in class.
Class 6 Mobile objects and navigation - Concept of mobile objects in a process graph - Navigation on a spanning tree instructed in class.
Class 7 Causality and logical time - Causality in distributed systems - Locigal time (linear time, vector time) - Cuts and consistent cuts instructed in class.
Class 8 Global state and checkpointing - Global states, snapshot algorithms - Application to checkpointing instructed in class.
Class 9 Distributed termination detection (I) - Termination predicate; termination detection problem - Safra's termination detection algorithm instructed in class.
Class 10 Distributed termination detection (II) - Consistent intervals and waves - Termination detection in an arbitrary topology instructed in class.
Class 11 Leader election - Leader election problem, leader election in a ring - Adaptation to leader election in an arbitrary topology - Randomized leader election in anonymous networks instructed in class.
Class 12 Order constraints on message delivery - Causal message delivery - Totally ordered broadcast instructed in class.
Class 13 Distributed shared memory - Abstraction definition, shared register - Atomic consistency (linearizability) - Sequential consistency instructed in class.
Class 14 Q&A + final test instructed in class.

Out-of-Class Study Time (Preparation and Review)

To enhance effective learning, students are encouraged to spend approximately 100 minutes preparing for class and another 100 minutes reviewing class content afterwards (including assignments) for each class.
They should do so by referring to textbooks and other course material.


Michel Raynal, "Distributed Algorithms for Message-Passing Systems," Springer, 2013. ISBN 978-3-642-38123-2
(NB: e-book available for download through Tokyo Tech agreement with Springer)

Reference books, course materials, etc.

The course is only *loosely* based on the textbook which is heavily complemented by:
Course materials. Slide copies, research papers, programming resources, ... distributed during lectures and/or made available for download from the course repository.

Assessment criteria and methods

The examination will assess the understanding of basic concepts of distributed algorithms (problems, algorithms, correctness, and methodology). Programming reports will assess the ability to apply the knowledge to practical problems.
Homework, programming, and class discussions (50%), tests and exams (50%)

Related courses

  • MCS.T213 : Introduction to Algorithms and Data Structures
  • MCS.T314 : Operating Systems

Prerequisites (i.e., required knowledge, skills, courses, etc.)

Basic knowledge on algorithms and data structures, and some knowledge on concurrent systems (as typically taught in undergraduate courses on operating systems). To fully benefit from the practical exercises, students are advised to have some programming experience, preferably in Scala, Rust, Swift, Python, Ruby, Scheme, Java, Javascript, ML,...


As much as possible, prepare and bring a laptop (preferably Mac, Linux, Win/WSL, or BSD) with university wireless network support and latest versions of Java JDK and IntelliJ IDEA/Visual Studio Code already installed with official Scala extension.
(When the course is taught online, less focus will be given to hands-on exercises.)

Page Top