Data sizes are growing faster than the capacities of single processors. This makes it almost a certainty that the future of computation will rely on parallelism. In this new graduate-level course, we discuss the expanding body of work on the theoretical foundations of modern parallel computation, with an emphasis on the algorithmic tools and techniques for large-scale processing.
This course will familiarize the students with the algorithmic tools and techniques in modern parallel computation. In particular, we will discuss the growing body of algorithmic results in the Massively Parallel Computation (MPC) model. This model is a mathematical abstraction of some of the popular large-scale processing settings such as MapReduce, Hadoop, Spark, etc. By the end of the semester, the students will know all the standard tools of this area, as well as the state of the art on a number of the central problems. Our hope is that the course prepares the students for independent research at the frontier of this area, and we will attempt to move in that direction with the course projects.
The course assumes no particular familiarity with parallel computation and should be accesible to any student with sufficient theoretical/algorithmic background. In particular, we expect that all students are comfortable with the basics of algorithmics designs and analysis, as well as probability theory.
The course will cover a sampling of the recent developments (and open questions) at the frontier of research in massively/modern parallel computation. the material will be based on compilation of recent papers on this area, which will be provided throughout the semester.
Prerequisites / Notice
The class does not expect any prior knowledge in parallel algorithms/computing. Our only prerequisite is the undergraduate class Algorithms, Probability, and Computing (APC) or any other course that can be seen as the equivalent. In particular, much of waht we will discuss uses randomized algorithms and therefore, we will assume that the students are familiar with the tools and techniques in randomized algorithms and analysis (to the extent covered in the APC class).