This course provides an introduction to the internals of cloud computing by looking underneath the hood at the distributed systems that underlie today's cloud technologies. The course will discuss concepts, techniques, and industry systems including open source systems. Students will learn about topics like distributed systems, distributed algorithms, MapReduce, key-value stores, peer-to-peer systems, grids, gossip algorithms, membership protocols, Paxos, and more. The syllabus includes homework assignments, a C++ programming assignment to implement a membership protocol, and an exam.