COMPSCI 512: Distributed Systems