This document provides an overview of clock synchronization in distributed systems. It discusses how physical clocks can differ slightly in frequency and how precise atomic clocks are used to define International Atomic Time (TAI) and Universal Coordinated Time (UTC). It also describes several common clock synchronization algorithms, including Cristian's algorithm, the Berkeley algorithm, and averaging algorithms. Logical clocks are introduced as an alternative to synchronized physical clocks for maintaining consistency in distributed algorithms. Lamport timestamps are presented as a way to totally order events in a distributed system.