1. Introduction. - 1.1 Motivation. -1.2 Distributed Programming Abstractions. 1.3 The End-to-End Argument. 1.4 Software Components. - 1.5 Classes of Algorithms. -1.6 Chapter Notes. 2. Basic Abstractions. - 2.1 Distributed Computation. - 2.2 Abstracting Processes. - 2.3 Cryptographic Abstractions. - 2.4 Abstracting Communication. - 2.5 Timing Assumptions. - 2.6 Abstracting Time. - 2.7 Distributed-System Models. - 2.8 Exercises. - 2.9 Solutions. - 2.10...