This course deals with the foundational principles of distributed systems and covers modern distributed computing frameworks. Students learn abstractions and principles in distributed computing, how to design a distributed computing framework, and their application to cloud computing.