This document provides an overview of distributed computer systems. It discusses how distributed systems arose due to falling hardware costs and increasing network connectivity. A distributed system is defined as a collection of independent computers that appears as a single system to users. Examples include the web, processor pools, and airline reservation systems. Distributed systems aim to provide various forms of transparency to hide the distributed nature from users. They face challenges around scalability that can be addressed through techniques like replication, distribution, and hiding communication latency. The document outlines concepts in distributed operating systems, network operating systems, and middleware and compares different approaches. It also discusses client-server models and multitier architectures commonly used in distributed systems.