CS 636: Analysis of Concurrent Programs (Semester 2025-26-II)

Class hours: TuThF 8-9 AM in KD 102

Instructor Information

Name Email
Swarnendu Biswas swarnendu@cse.iitk.ac.in

TA Information

Name Email
Srinjoy Sarkar srinjoys23@cse.iitk.ac.in
Sahil Basia sahilbasia24@cse.iitk.ac.in
Binong Kiri Bey binong@cse.iitk.ac.in
Vishal Ramdas Junjare vrjunjare25@cse.iitk.ac.in

Course Description

This course will focus on the challenges of developing correct and scalable concurrent programs. We will discuss the errors we make while writing concurrent programs and the techniques and tools to debug them. We will learn about techniques and abstractions that help write correct concurrent programs, such as synchronization primitives and transactional memory. Furthermore, we will discuss testing of concurrent programs and ideas to avoid common performance bottlenecks.

We will have 2-3 programming assignments and a course project.

Prerequisites
  • Exposure to the following courses (or equivalent) is desirable: CS220 (Computer Organization) and CS330 (Operating Systems).
  • Programming maturity with popular programming languages like C, C++, and Java.

Syllabus

The course will focus on a subset of the following topics.

We may add new, drop existing, or reorder topics depending on progress and class feedback. The course may also involve reading and critiquing related research papers.

Policies

Evaluation Scheme

The following is a tentative allocation and might change slightly depending on the strength of the class. Grading is relative.

Class participation/quizzes 5%
Assignments 15%
Midsem 25%
Course project 25%
Endsem 30%

Academic Integrity

Feedback

I am open to feedback about the course content and presentation. Feel free to provide suggestions for improvements.

Resources

Date Topic Resources Recommended Reading
First course handout FCH
06/01, 08/09, 09/09, 13/09, 15/09 Concurrency Bugs Slides OSTEP Chapters 26, 32
Cache Coherence Slides MCM Chapters 2, 6, 8 (IITK has subscribed to the ebook)
Memory Consistency Models Slides Shared Memory Consistency Models: A Tutorial
MC Chapters 1-5
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
Concurrent Data Structures MP Chapters 3, 9, 10, 11, 13
OSTEP Chapter 29
Performance of Concurrent Programs
Transactional Memory
Testing of Concurrent Programs

References

I have listed (NOT in any particular order) a few popular references.
[MP] The Art of Multiprocessor Programming, 1st edition - Maurice Herlihy and Nir Shavit
[MCM] A Primer on Memory Consistency and Cache Coherence, 2nd edition - Vijay Nagarajan, Daniel J. Sorin, Mark D. Hill and David A. Wood
[SMS] Shared-Memory Synchronization, 2nd edition - M. Scott and T. Brown.
[TM] Transactional Memory, 2nd edition - T. Harris et al.
[PCA] Parallel Computer Architecture: A Hardware/Software Approach - D. E. Culler et al.
[JCIP] Java Concurrency In Practice - B. Goetz et al.
[OSTEP] Operating Systems: Three Easy Pieces - R. Arpaci-Dusseau and A. Arpaci-Dusseau