"Barbosa makes the otherwise difficult subject of distributed algorithms very enjoyable and attractive to both students and researchers. The leading intuitive discussion of each algorithm is so very well organized and clearly written that a reader can, without the slightest effort, have a clear picture of it. An ideal textbook for an one-semester distributed algorithms course." -- Mamoru Maekawa, Professor, Graduate School of Information Systems, University of Electro-Communications, Tokyo "The strength of this book is its focus on practical problems in distributed computing. The book is very accessible---I would use it teaching a senior level course on distributed algorithms." -- David Nicol, Department of Computer Science, Dartmouth College
An Introduction to Distributed Algorithms takes up some of the main concepts and algorithms, ranging from basic to advanced techniques and applications, that underlie the programming of distributed-memory systems such as computer networks, networks of workstations, and multiprocessors. Written from the broad perspective of distributed-memory systems in general it includes topics such as algorithms for maximum flow, program debugging, and simulation that do not appear in more orthodox texts on distributed algorithms. Moving from fundamentals to advances and applications, ten chapters -- with exercises and bibliographic notes -- cover a variety of topics. These include models of distributed computation, information propagation, leader election, distributed snapshots, network synchronization, self- stability, termination detection, deadlock detection, graph algorithms, mutual exclusion, program debugging, and simulation. All of the algorithms are presented in a clear, template- based format for the description of message-passing computations among the nodes of a connected graph. Such a generic setting allows the treatment of problems originating from many different application areas. The main ideas and algorithms are described in a way that balances intuition and formal rigor -- most are preceded by a general intuitive discussion and followed by formal statements as to correctness complexity or other properties.