The goal of this course is to provide a comprehensive view on recent topics and trends in distributed systems and cloud computing. We will discuss the software techniques employed to construct and program reliable, highly-scalable systems. We will also cover architecture design of modern datacenters that constitute a central topic of the cloud computing paradigm. The course is complemented by a number of lab sessions to get hands-on experience with Apache Spark.
Knowledge of data structures, algorithm design, distributed algorithms. Being fluent with Python (scala would be a big plus!) is highly desirable.