CS 87 Parallel & Distributed Computing

This course covers a broad range of topics related to parallel and distributed computing, including parallel and distributed architectures and systems, parallel and distributed programming paradigms, parallel algorithms, and scientific and other applications of parallel and distributed computing. In lecture/discussion sections, students examine both classic results as well as recent research in the field. The lab portion of the course includes programming projects using different programming paradigms, and students will have the opportunity to examine one course topic in depth through an open-ended project of their own choosing. Course topics may include: multi-core, SMP, MMP, client-server, clusters, clouds, grids, peer-to-peer systems, GPU computing, scheduling, scalability, resource discovery and allocation, fault tolerance, security, parallel I/0, sockets, threads, message passing, MPI, RPC, distributed shared memory, data parallel languages, MapReduce, parallel debugging, and applications of parallel and distributed computing.

Prereqs: CS31 and CS35 required; at least one prior upper-level CS course required.
Designations: NSE, W (Writing Course), CS Group 2 Course

Course Goals

Course Webpages:


Current or most recent: CS87: Fall 2023

Older: CS87: Fall 2021, CS87: Spring 2020 (half semester on-line), CS87: Spring'18, Spring'16, Spring'12, Spring'10