DISTRIBUTED ALGORITHMS
COMP 575

Instructor

Prof. C. Tropper
McConnell Hall, room 112N
Office hours: Monday, Wednesday 12:00-1:30

Teaching assistant

Arash Nourian,arash.nourian@mail.mcgill.ca
Trottier 3130 (office hours)
Office hour: Wednesday, 12:30-1:30
e-mail: arash.nourian@mail.mcgill.ca

Course Description and Outlinei

With the development of high-speed networks and ever-faster microprocessors our approach to computation is undergoing an evolution towards a distributed model. In this model, we make use of message passing between processors, This evolution is not without a price however; we can no longer rely upon a a global view of the computation, as global variables are not available. Hence we need to re-visit basic questions such as how to detect the termination of a computation and how to obtain a global snapshot of the computation (so we can de-bug our programs, for example). In this course, we attempt to cover fundamental paradigms in distributed algorithms along with several of the proof techniques which have evolved for establishing correctness. The course will have an implementation flavor, as several projects are required (see below). These projects are intended to acquaint the student with the pitfalls (and pleasures) of programming distributed algorithms. Assignments of a theoretical nature, intended to help students develop an appreciation for the techniques of proof appropriate for establishing correctness will be required as well. We will read a collection of original papers, collected in the form of a course pack, which is available in the bookstore. The outline for the topics in the course follows.
1. Time in distributed systems.
2. Leader election algorithms, mutual exclusion algorithms.
3. Termination detection algorithms
4. Deadlock detection algorithms
5. Global snapshots and applications (global virtual time, checkpoints in distributed databases,..)
6. Garbage collection algorithms
7. Fault tolerance
8. Proof techniques for distributed algorithms
9. How processes learn

Papers for course

The papers which we will read for this course may be downloaded from 575 papers


MPI references Here are a list of tutorials on mpi which should be of some help.


Course Project Page

project