Prerequisites: CS 010C; graduate standing
Description: Introduces the fundamental problems of distributed computing and the main algorithmic techniques used to solve these problems. Considers crashing processes and also malicious non-cooperating processes. Covers reliable broadcast, causal broadcast, total-order broadcast, distributed shared memory, consensus variants including blockchain consensus, atomic commit and terminating reliable broadcast, and replicated systems.