Globally distributed systems often involve shared data that is read and modified by multiple nodes across the network. The CAP theorem states that in a network with unreliable communication, strong consistency and availability cannot be achieved at the same time. Aiming for availability, practical systems provide weaker consistency guarantees collectively called eventual consistency. These systems improve availability and responsiveness; however, their consistency guarantees are challenging to understand and reason about both for system designers and programmers. In this talk, I will present the CAP the theorem, definitions for strong and eventual consistency, common classes of inconsistency and algorithms that provide eventual consistency for common data types.