CIS 640: Introduction to Multiprocessor Programming, Spring 2009


Instructor: Rajeev Alur ( alur@cis)

Class: Mon Wed 10.30--12, Levine 307

Office hours: Wed 4-5, and by appointment


Introduction

Our ability to effectively harness the computational power of the next generation of multiprocessor and multicore architectures is predicated upon advances in programming languages and tools for developing concurrent software. This has resulted in a surge of concurrency-related research activity from different viewpoints, such as rethinking of programming abstractions for concurrency, and design of efficient data structures and algorithms for multiprocessor architectures. This course will focus on foundations of concurrent programming for modern multiprocessor architectures. Topics covered include synchronization primitives, programming abstractions for concurrency, concurrent data structures, memory consistency models, and transactional memory.

Prerequisites

The course requires undergraduate coursework in Computer Architecture, Programming Languages, Algorithms, and Operating Systems If you need more information to decide, contact the instructor.

Textbook

The Art of Multiprocessor Programming
Herlihy and Shavit, Morgan Kaufmann, 2008.

Coursework and Grading

There will be periodic homework assignments consisting of theoretical problems, concurrent programming, and experimental evaluation on a multiprocessor machine (send CETS an email to get an account on the SEAS machine arachnid). There will be no exams. A major component of the evaluation will be the course project. The project can be done in groups of two, and will require a presentation in the final week.

Tentative Schedule


Selected Relevant Papers and Projects


Maintained by Rajeev Alur