This document provides an overview of distributed systems. It defines a distributed system as a collection of independent computers that appears as a single coherent system to users. Key characteristics include hiding differences between computers and providing consistent, uniform interaction regardless of location or time. The main goals of distributed systems are making resources accessible, achieving distribution transparency, being open and scalable. Techniques for improving scalability include hiding communication latencies, distribution, and replication. Challenges include lack of global state information and handling slow/failed nodes.