Modeling distributed systems Communication models Naming Synchronization Fault tolerance Distributed agreement in practice Peer-to-peer Consistency and Replication Big data