This document discusses building distributed systems. It defines a distributed system as a software system where components on networked computers communicate and coordinate by passing messages. Distributed systems provide benefits like fault tolerance, horizontal scalability, and decentralization. Some fundamental concepts discussed include consistency models like strict, sequential, and causal consistency as well as the CAP theorem and challenges of time synchronization. Consensus protocols like Raft and Paxos are also introduced as ways to reach agreement across distributed systems. Examples of distributed systems like Zookeeper and Lamport are provided.