Computer Science 561 - Introduction to Distributed Algorithms
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.
Lectures: TR 14:00-15:15 (MS 217)
Tutorials: TR 16:00-16:50 (MS 217)
See Lisa's and Philipp's homepage.
Lisa: Mondays, 16:00-17:00 (ICT 614), or by appointment.
Philipp: Thursdays, 11:00-12:00 (ICT 655), or by appointment.