The lower cost and increased flexibility and availability of computer networks means that they are rapidly replacing centralized 'mainframes'. The implementation of networked systems and the control of applications running in them require, however, the design of new techniques and methods: collectively known as distributed algorithms. In this textbook Professor Tel provides a clear, yet rigorous introduction to a large collection of these methods and the related theory that has been developed over the last fifteen years. He concentrates on algorithms for the point-to-point message passing model, and includes algorithms for the implementation of computer communication networks (i.e. routing, data transmission, connection management and techniques for avoiding deadlock). Other key areas discussed are algorithms for the control of distributed applications (wave, broadcast, election, termination detection, randomized algorithms for anonymous networks, snapshots, deadlock detection, synchronous systems), and fault-tolerance achievable by distributed algorithms (possibility or otherwise in asynchronous systems, consensus in synchronous systems, authentication, synchronization and stabilizing algorithms). Developed from lectures given to undergraduate and graduate students, this textbook comes complete with examples and exercises with solutions, but the treatment of algorithms is deep enough to ensure that it will be useful for practising engineers and scientists.