2019 Distributed Algorithms

Font size  SML

Register update notification mail Add to favorite lecture list
Academic unit or major
Graduate major in Computer Science
Instructor(s)
Defago Xavier 
Course component(s)
Lecture
Day/Period(Room No.)
Mon7-8(W935)  Thr7-8(W935)  
Group
-
Course number
CSC.T438
Credits
2
Academic year
2019
Offered quarter
1Q
Syllabus updated
2019/4/1
Lecture notes updated
-
Language used
English
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.

Keywords

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

Competencies that will be developed

Intercultural skills Communication skills Specialist 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. 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 Mobile objects and navigation - Concept of mobile objects in a process graph - Navigation on a spanning tree instructed in class.
Class 6 Distributed mutual exclusion - Mutual exclusion problem, permission-based algorithms, edge-reversal - Quorum construction 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 Simulating synchrony in asynchronous systems - Notion of synchronizers - Basic synchronizers instructed in class.
Class 12 Leader election - Leader election problem, leader election in a ring - Adaptation to leader election in arbitrary topology - Randomized leader election in anonymous networks instructed in class.
Class 13 Order constraints on message delivery - Causal message delivery - Totally ordered broadcast instructed in class.
Class 14 Distributed shared memory - Abstraction definition, shared register - Atomic consistency (linearizability) - Sequential consistency instructed in class.
Class 15 Q&A + final test instructed in class.

Textbook(s)

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.

Course materials. Slide copies, research papers, programming resources, ... distributed during lectures and/or made available for download from the course webpage.

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
  • MCS.T406 : Distributed 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, Java, Javascript, Swift, Python, Ruby, Scheme, ML,...

Other

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.

Page Top