ICS 491: Parallel Algorithms (Spring 2014)

Instructor: Nodari Sitchinava
Email: nodari (at) alum (dot) mit (dot) edu
Location: Hamilton 3F
Time: Tuesday, Thursday 1:30-2:45pm
Office Hours: Tuesday 3-4pm, POST 306B


Course Description: Parallel processors are everywhere: servers, desktops, tablets, even cell phones. However, writing programs that take advantage of all the available parallelism is challenging, in part because it requires different techniques than what we have learned in the sequential algorithms courses.

This course will teach how to design and analyze algorithms for parallel systems. The students will learn the techniques for designing and analyzing parallel algorithms for various parallel models of computation (shared memory, distributed memory, interconnection networks) and how these models relate to modern parallel systems, such as multicores, clusters and GPUs. There will be a final project on the topic of student's choice.

Prerequisites: An algorithms course (e.g. ICS 311) or permission of the instructor.

Recommended Reading:
  • Joseph JáJá, Introduction to Parallel Algorithms , Addison Wesley, 1992.

  • John H. Reif, Synthesis of Parallel Algorithms, Morgan Kaufmann, 1993.


  • Homeworks: There will be 4 homeworks throughout the semester. Homework will be due at the begining of the corresponding Thursday lecture, i.e. at 1:30pm and can be submitted in person in lecture or emailed to me before the class. Homeworks can be typed or hand-written, however, I must understand the handwriting to grade it.

    Late Homeworks: Late homeworks can be emailed to me. Penalty for late homeworks is 33% of the maximum number of points within every 24 hours that it is late. For example, submission of homework that is worth 30 total points before Friday 1:30pm will be deducted 10 points. Submissions before Saturday 1:30pm, will be deducted 20 points. Submissions after Saturday 1:30pm will be deducted full 30 points, thus, are not worth anything. Extenuating circumstances do arise, therefore, a single homework will be accepted up to 48 hours late without any point deductions.

    Final project: The course will have a final project. The students have a choice of either 1) implementing one of the algorithms presented in class and presenting the results in front of the class, or 2) independently learning a new parallel algorithm and presenting it in class.

    Grading: Grades are based on class participation (20%), homeworks (40%), and the final project (40%).

    Schedule

    Class Day Date Topic Notes
    -- Tue Jan 14
    1 Thu Jan 16 Introduction
    Models of computation
    2 Tue Jan 21 Models of Computation
    Brent's scheduling principle
    3 Thu Jan 23 Prefix Sums
    4 Tue Jan 28 Selection
    Mergesort
    5 Thu Jan 30 Sorting networks
    6 Tue Feb 4 Sorting networks
    7 Thu Feb 6 Homework 1 out
    8 Tue Feb 11
    9 Thu Feb 13 List Ranking: Wyllie's pointer hopping, randomized MIS
    10 Tue Feb 18 List Ranking: deterministic MIS
    11 Thu Feb 20 Tree algorithms: Euler circuit, expression tree evaluation Homework 1 due
    12 Tue Feb 25
    13 Thu Feb 27 Lowest Common Anscestors, Range Minima Queries Homework 2 out
    14 Tue Mar 4
    15 Thu Mar 6 Connected components, Minimum spanning tree
    16 Tue Mar 11 O(log n) time connected components
    17 Thu Mar 13 Bi-connected components Homework 2 due
    Homework 3 out
    18 Tue Mar 18 All-pairs shortest paths, matrix multiplication
    19 Thu Mar 20 Computational Geometry: Convext hull
    -- Tue Mar 25 Spring Break
    -- Thu Mar 27 Spring Break
    20 Tue Apr 1
    21 Thu Apr 3 Homework 3 due
    22 Tue Apr 8
    23 Thu Apr 10
    24 Tue Apr 15 Computational Geometry: Half-plane intersection, 2-variable linear programming
    25 Thu Apr 17 Homework 4 out
    26 Tue Apr 22
    27 Thu Apr 24
    28 Tue Apr 29 Computational Geometry: Plane sweep tree
    29 Thu May 1 Advanced models of computation: PEM, GPU, MapReduce Homework 4 due
    30 Tue May 6 Project presentation. Limits of parallelism Project due