Due to the massive volumes of data, many modern services are executed in memory-restricted settings, i.e., in setups where the processed data cannot be stored on a single computing unit. This state of affairs led to the development of several computational models, with massively parallel (MPC) and streaming computation being among the most prominent ones.

In this course, we will study several basic algorithmic questions inspired by MPC and streaming. In particular, we will see how specific graph partitioning and filtering techniques can yield faster algorithms. In the streaming context, we will touch on hashing and linear sketching, which are perhaps the most influential techniques in handling big volumes of data when the available memory is extremely scarce. The material will be presented at an introductory level.

The in-class discussion will mainly focus on theoretical aspects, occasionally touching on practical relevance. This course aims to introduce students to basic tools and techniques that led to state-of-the-art results for the aforementioned problems. This course can be seen as an advanced version of ECS 122A with an emphasis on algorithmic techniques for large graphs. Analysis of developed methods will require a mixture of basic applied mathematics and algorithm design akin to that seen in ECS 122A.


Grading details will be posted on Canvas when the course begins. Tentatively, a grade will be formed based on two-three homework sets, two-three quizzes and an exam.

Lecture notes:

Course attendance

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


ECS 122A, or equivalent, is strongly recommended. Knowledge of basic graph algorithms and introductory probability, e.g., random variables and expectation, is needed for a proper understanding of the material.