This book, "Distributed Algorithms" by Jukka Suomela, provides an introduction to the theory of distributed algorithms. It covers topics such as models of computation, algorithm design and analysis, and computational complexity. The book is structured into several parts, including an informal introduction, graph-theoretic foundations, models of computing, and proving impossibility results. Each chapter includes exercises and bibliographic notes for further reading. The book emphasizes the importance of unique identifiers and randomness in solving distributed problems, and it explores the challenges and limitations of distributed algorithms, particularly in terms of locality and computational complexity. The author also discusses the use of randomized algorithms and provides examples of efficient algorithms for coloring paths and solving other graph problems. The book is designed to support a course at Aalto University and is available online with an extended and revised version.This book, "Distributed Algorithms" by Jukka Suomela, provides an introduction to the theory of distributed algorithms. It covers topics such as models of computation, algorithm design and analysis, and computational complexity. The book is structured into several parts, including an informal introduction, graph-theoretic foundations, models of computing, and proving impossibility results. Each chapter includes exercises and bibliographic notes for further reading. The book emphasizes the importance of unique identifiers and randomness in solving distributed problems, and it explores the challenges and limitations of distributed algorithms, particularly in terms of locality and computational complexity. The author also discusses the use of randomized algorithms and provides examples of efficient algorithms for coloring paths and solving other graph problems. The book is designed to support a course at Aalto University and is available online with an extended and revised version.