Analysis of Concurrent Programs

CSE 636, IIT Kanpur, Semester 2018-2019-II

Instructor Information

Name Swarnendu Biswas
Email swarnendu AT
Class hours MonWed 3:30 - 4:45 PM in KD 101
Office hours Tue 4-5 PM, Fri 11-12 PM in KD 302

TA Information

Name Prafulla Saxena
Email prafulla AT

Course Description

This course will discuss the needs and challenges in developing correct and scalable concurrent programs. We will learn about common type of errors that we make while writing concurrent programs, and techniques and tools to debug them. We will learn about techniques and abstractions that help write correct concurrent programs, for example, locks and other synchronization primitives. We will also discuss how to analyze performance of concurrent programs, and ideas to avoid common performance bottlenecks.

  • Basic courses on compilers, operating systems, and computer architecture would be a bonus.
  • Programming maturity
  • Good knowledge in C/C++ and Java

Should I register? The intended audience is senior UG and PG students. I expect this course will be useful to students who are working or are interested in working in the general area of systems and large-scale software development.

Feel free to discuss with me if you are unsure about the scope.

   Course Policies and Syllabus   |   Academic Integrity   |   Evaluation Scheme   |   Resources   |   References    

Course Policies and Syllabus



The following is a tentative list of topics that we will cover during the course. We might add new, drop existing, or reorder topics depending on progress and class feedback.

The course will also involve reading and critiquing related research papers.


I am open (I hope!) to constructive feedback about the course content and presentation. I will distribute unofficial feedback forms a few weeks into the semester, and you will have the option of remaining anonymous.

Academic Integrity

Evaluation Scheme

You have two choices, choose the one which better suits you. Let me know by Jan 14th 2019.

Choice 1

Choice 2





Supplementary reading

 07/01/19 - 09/01/19 Course Details, Review of Systems Basics Course Details
Systems Basics
 09/01/19 - 12/01/19 Shared Memory Programming and Pthreads Slides LLNL Pthreads Tutorial
 12/01/19 - 14/01/19 Parallel Prefix Scan Slides Guy E. Blelloch's note
 14/01/19 - 28/01/19 Concurrency Bugs Slides References to relevant papers are included in the slides
 28/01/19 - 04/02/19 Shared Memory Synchronization Slides MP 2.3, 2.4, 2.6, 7.1-7.5, 8.3
SMS 4.1, 4.2, 4.3.1, 6.1
 06/02/19 - 25/02/19 Transactional Memory Slides TM 2.1, 2.2, 4.1, 4.2
 25/02/19 - 06/03/19 Memory Consistency Models Slides Shared Memory Consistency Models: A Tutorial
MC Chapters 3,4,5
 11/03/19 - 25/03/19 Concurrent Data Structures Slides MP Chapters 9, 10
 27/03/19 - 03/04/19 Testing Concurrent Programs Slides References to relevant papers are included in the slides
 08/04/19 - 10/04/19 Performance of Concurrent Programs Slides References to relevant papers are included in the slides


I have listed references (NOT in any particular order) that I think are good reads and would be useful at some stage while working on concurrent programming and related areas. You are NOT required to buy these books for this course. In addition, we will read and discuss several research papers which we will announce in class.