Principles of Distributed Computing (lecture collection)
Distributed computing is essential in modern computing and communications systems.
Examples are on the one hand large-scale networks such as the Internet, and on the
other hand multiprocessors such as your new multi-core laptop. The lecture notes on
this webpage introduce the principles of distributed computing, emphasizing the
fundamental issues underlying the design of distributed systems and networks:
communication, coordination, fault-tolerance, locality, parallelism, self-organization,
symmetry breaking, synchronization, uncertainty. We explore essential algorithmic ideas
and lower bound techniques, basically the "pearls" of distributed computing.
Each chapter covers a fresh topic.
Note that the order of the chapters is more or less arbitrary.
Each chapter is mostly independent, with the occasional reference to another chapter.