Topics include distributed communication models (e.g., sockets, remote procedure calls, distributed shared memory), distributed synchronization (clock synchronization, logical clocks, distributed mutex), distributed file systems, replication, consistency models, fault tolerance, QoS and performance, scheduling, concurrency, agreement and commitment, Paxos-based consensus, MapReduce and NoSQL datastores, cloud infrastructures and microservices. Prerequisites: CMPUT 379 and (ECE 487 or CMPUT 313).