15-210: Parallel and Sequential Data Structures and Algorithms


This course aims to teach methods for designing, analyzing, and programming sequential and parallel algorithms and data structures. The emphasis is on teaching fundamental concepts applicable across a wide variety of problem domains, and transferable across a reasonably broad set of programming languages and computer architectures. The course, however, includes a significant programming component in which students will program concrete examples from domains such as engineering, scientific computing, graphics, data mining, and information retrieval (web search). Unlike a traditional introduction to algorithms and data structures, this course puts an emphasis on parallel thinking—i.e., thinking about how algorithms can do multiple things at once instead of one at a time. The course follows up on material learned in 15-122 and 15-150 but goes into significant more depth on algorithmic issues.

The concepts covered by this course include:

The assignments use Standard ML (SML). We use SML for several reasons, including: (1) it is safe for parallelism, (2) it properly supports higher-order functions, and (3) its module system does a good job of supporting abstract interfaces without confounding interfaces with state.

Course Information


Tue and Thu 10:30-11:50, BH 136A (Adamson Wing)


There is no course textbook. Lecture notes and will be provided.


Section A - Wed 10:30-11:50, GHC 4301, Chris Martens
Section B - Wed 11:30-21:20, SH 222, Ian Voysey
Section C - Wed 12:30-1:20, SH 222, Aapo Kyrola
Section D - Wed 1:30-2:20, DH 1211, Kanat Tangwongsan and Margaret Reid Miller


30% Midterms, 25% Final, 45% Assignments


last modified 00:40, 31 Aug 2011
Valid CSS! Valid XHTML 1.0 Strict

The development of this course was supported in part by generous gifts from Intel's Higher Education Program, Microsoft Research, and IBM Research.