Due to the massive volume of data, many modern services are nowadays executed in a distributed fashion by resorting to MapReduce, Hadoop, Flume, Spark and similar (so-called) MPC frameworks. But how can one exploit the capabilities of MPC frameworks to design efficient algorithms? This course focuses on answering this question in the context of some basic combinatorial optimization problems, including maximum matching, PageRank, minimum vertex cover, maximal independent set, connected components, and clustering algorithms.

The in-class discussion will mainly focus on theoretical aspects of solving tasks in MPC, occasionally touching on practical relevance. The goal of this course is to equip students with tools and techniques that led to state-of-the-art results for the aforementioned problems.


Grading details will be posted on Canvas when the course begins. Tentatively, a grade will be formed based on the following:

Course attendance

It is not mandatory to attend lectures, although attendance is highly recommended.


ECS 122A and 122B, or equivalents, are required for a proper understanding of the material. Understanding of basic graph algorithms and basic probability, e.g., random variables and expectation, is highly recommended.

Lecture topics

The following papers were fully or partially presented in class and/or reports: