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.
- Lesson 1:
Introductory Lecture- Concurrency Basics
- Lesson 2:
From
Concurrency to Concurrent Programming
- Lesson 3: Basic exposure to
Multi-threaded Java
- Lesson 4: Threads and concurrent
execution
- Lesson 5: Managing concurrency via locks
and shared objects
- Semester break
- Lesson 6: Monitors as a concurrency
control mechanism
- Lesson 7: Midterm Examination
- Lesson 8: Deadlocks in concurrent systems
- Lesson 9: Safety and Liveness Issues in
concurrent programming
- Lesson 10: Parallel programming using MPI - 1
(point-to-point communication)
- Lesson 11: Parallel programming using MPI - 2
(collective communication)
- Lesson 12: Parallel programming using MPI - 3
(management of communicators)
- Lesson 13: Revision of course materials.
Materials
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)
Assessment
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