This course will teach the principles and practice of distributed systems as applied in today's cloud computing environments. The course will cover fundamental concepts in distributed computing including distributed clocks, consistency, fault tolerance, and consensus. The course will also cover popular cloud computing service models, related programming models, datacenter architectures, software-defined networking, and security and privacy issues in public clouds. The course will expose students to public cloud platforms such as Amazon EC2, Google Cloud Engine, Microsoft Azure etc.