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.
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
|✔ Specialist skills||Intercultural skills||Communication skills||Critical thinking skills||✔ Practical and/or problem-solving skills|
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|
|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.||Prepare a working programming environment with network, IntelliJ IDEA and Java JDK.|
|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.|
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)
Course materials. Slide copies, research papers, programming resources, ... distributed during lectures and/or made available for download from the course webpage.
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%)
As much as possible, prepare and bring a laptop (preferably Mac, Linux, or BSD) with university wireless network support and latest versions of IntelliJ IDEA and Java JDK already installed.
(When the course is taught online, less focus will be given to hands-on exercises.)