Computer Science 561 - Introduction to Distributed Algorithms

Fall 2011 - Philipp Woelfel

Course Summary

Today's dual and quad-core processors are the norm for standard desktop computers. The near future promises machines with hundreds of CPUs on a single chip. Expertise for parallel software design lags far behind the potential hardware.

While parallelism offers opportunities to speed up computation, the asynchrony of these systems also raises new challenges. Designing algorithms for asynchronous systems is difficult and errorprone. Therefore it is essential to establish the correctness of our solutions.

In this course we learn how to design and establish the correctness of algorithms for fundamental problems of asynchronous multiprocessor systems. Topics include synchronizing executions, ensuring mutual exclusive access to resources, designing powerful shared objects from registers, taking global memory snapshots, reaching consensus, and designing shared data structures.


The Art of Multiprocessor Programming, Maurice Herlihy and Nir Shavit, Morgan Kaufmann Publishers 2008. ISBN 978-0-12-370591-4.


CPSC 413

Time Table

Lectures: TR 14:00-15:15 (EDT 723)
Tutorials: TR 16:00-16:50 (EDC 154)


See my homepage.


News and handouts will be posted to the course forum. (You will receive a login at the beginning of the course.) If you have questions that may be interesting to all students, please ask them there.

Office Hours

TR, 15:15-16:00 (EDT 723 or ICT 655), or by appointment. Please approach me right after class if you want to meet me during my regular office hours.