CS 3211 - Parallel and Concurrent Programming

      (Sem 2, 2009/10)

Brief Description

A concurrent system consists of a set of processes that executes simultaneously and that may collaborate by communicating and synchronising with one another. Examples of concurrent systems are parallel programs that describe sets of collaborating processes. This module introduces the design, development and debugging of parallel programs. It will build on the concurrency concepts gained from the Operating Systems module. It covers concepts and modelling tools for specifying and reasoning (about the properties of) concurrent systems and parallel programs. It also covers principles of performance analysis, asynchronous and asynchronous parallel programming, and engineering concurrent systems and parallel programs.

Course Outline and Lesson Plan

The following is a tentative outline. Detailed Course Schedule appear in Lesson Plan.


    Text Book

            Concurrency: State Models and Java Programming by Jeff Magee and Jeff Kramer, Wiley Second Edition.

    Supplementary Text

            Parallel Programming by Lin and Snyder, Pearson International Edition.

            Lot of online material on MPI is also available here.

    Lecture Notes  (Click for accessing Lesson Plan)



Midterm                :   20%

Assignments        :   30%
Final                      :   50%

Programming Assignments

        Assignment 1:  Assignment on Concurrency and modeling - 5%

        Assignment 2:  Multi-threaded Java programming with shared objects and locks - 5%

        Assignment 3:  Implementing monitors in Java, Avoiding deadlocks  -  10%

       Assignment 4:  Parallel Programming Assignment using MPI  - 10%

Other Course Information

Module Coordinator   Abhik Roychoudhury, Office : COM1 #03-20
Lectures                        Thursday  2:00 PM - 4:00 PM, LT 15

Consultation                Whenever you want to meet me, send me e-mail by proposing a meeting time.

Pre-requisites              CS2106