CS 3211- Parallel and Concurrent Programming

     Lesson Plan for 2009-10 Semester 2                        

DATES

Lecture  Summary 

Readings      

Resources

Week 1, 14 January Introductory Lecture Discussion on concurrency concepts, with the aid of a modeling language (Promela). Concepts of interleavings, shared variables, and message passing are introduced.

 

The chapter "An overview of Promela" from the book "The SPIN model checker" by Gerard Holzmann (posted in IVLE E-reserves).

 Lec1.pdf
Week 2, 21 January More on Concurrency Concepts: We continue our discussion of concurrency concepts with focus on synchronization mechanisms. A demo of the SPIN tool will be given. SPIN is a good tool for understanding concurrency - performing a search of all interleavings in a concurrent program. In this course we will primarily use its programming front-end the Promela modeling language, to get our feet wet with concurrency concepts.

 

The chapter "Synchronization" from the book "Principles of SPIN model checker by Ben-Ari (posted in IVLE E-reserves). Lec2.pdf
Week 3, 28 January Multi-threaded Java Programming: A basic discussion of programming constructs for multi-threaded Java programming.

First Homework Posted:  HW1-new.pdf

Lot of online tutorials exist such as  http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html

 

Lecture:

Lec3.pdf

Tutorial:

Tut1.pdf

Week 4, 4 February Threads & Concurrent Execution:  We continue with Java threads and their concurrent execution in this lecture. There will be less focus on shared objects and ensuring of mutual exclusion in this lecture.

Chapter 2,3 of textbook

Lecture:

Lec4-1  and

Lec4-2

Tutorial: Tut2.zip

Week 5, 11 February Multi-threaded programming with shared objects: We finish the discussion on concurrent execution (Lec4-2.pdf) and move on to discussion on multi-threaded programming with locks.

Second Homework postedHW2-new.pdf

Chapter 3,4 of textbook

Lecture:

Lec4-2 and

Lec5

 

Tutorial:

Tut3

Week 6, 25 February Monitors: We discuss monitors as a structured concurrency control primitive in this lecture.

 

Chapter 5 of textbook

Lecture: Lec6

Tutorial: Tut4

                                                                                                     
Week 7, 4 March Midterm Examination

 

Material:  first five lectures of the course. Tutorial: Tut5
Week 8, 11 March

Deadlocks in concurrent programming: The reasons for encountering deadlock in concurrent systems are discussed in this lecture.

The tutorial this week will discuss the solutions for the midterm.

Third Homework postedHW3-new.pdf

 

Chapter 6 of textbook

Lecture: Lec8

Tutorial: Midterm Solutions

Week 9, 18 March Safety and Liveness issues in concurrent programming: So far we have studied specific properties to think of while writing concurrent programs - such as mutual exclusion and no deadlocks. In this lecture, we put them in proper perspective by presenting two general classes of properties, namely safety and progress. This will also conclude our discussion on concurrent programming, and we move on to parallel programming from the next week onwards. Chapter 7 of textbook

Lecture: Lec9

Tutorial: Tut7

Week 10, 25 March

Parallel Programming using MPI --- We start our discussion on parallel programming in this lecture. Point to point communication is discussed. We start with discussion on blocking send-receives, and then move on to discussing non-blocking send-receives.

Chapter 7 of Principles of Parallel Programming by Lin and Snyder (posted in IVLE E-reserves). The online tutorial https://computing.llnl.gov/tutorials/mpi/ is also useful.

Lecture:  Lec10

Tutorial:  Tut8

Week 11, 1 April Parallel Programming using MPI --- We continue our discussion on parallel programming in this lecture. Point to point communication is completed, in particular our discussion on non-blocking send receives is completed. We start our discussion on collective communication primitives such as broadcast, scatter, gather and reduce.

Fourth and last Homework postedHW4-new.pdf

Readings:  As in Week 10

Guidelines for accessing tembusu for MPI programming: tembusu-MPI-access.pdf

Lecture:Lec11

Tutorial: Tut9

Week 12, 8 April Parallel Programming using MPI --- We complete our discussion of collective communication, and move on to process communicators. As in Week 10 Lecture: Lec12

Tutorial: Tut10

Week 13, 15 April

Revision of all materials covered in the course: The lecture notes for this lecture will be posted after the lecture.

 

Final Examination is on May 4 2010, Afternoon.

   All materials covered in the past 12 weeks.

Lecture: Lec13

 

Tutorial: Tut11