Analysis of Concurrent Programs

CS 636, Semester 2024-2025-II, IIT Kanpur


Instructor Information

Name Swarnendu Biswas
Email swarnendu AT cse.iitk.ac.in
Class hours Mon 11:00-12:00 PM ThuFri 10:00-11:00 AM in KD 102

TA Information

Name Email (AT cse.iitk.ac.in)
Binong Kiri Bey binong
Srinjoy Sarkar srinjoy

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.

The course may include programming assignments and a course project.

Prerequisites
  • Exposure to CS 220 (Computer Organization) and CS 330 (Operating Systems) (or equivalent non-IITK courses) is desirable
  • Programming maturity (primarily C/C++/Java) is desirable


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


Course Syllabus and Policies

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.

The recommended reading material is part of the course.

Policies

Feedback

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


Academic Integrity


Evaluation Scheme

Class participation (quizzes, interaction) 5%
Assignments (2-3) 15%
Midsem 25%
Term Project (with periodic evaluation) 25%
Endsem 30%

Resources

Date Topic Resources Recommended Reading
First Course Handout
06/01, 09/01, 10/01, 13/01, 16/01 Concurrency Bugs Slides
17/01, 20/01, 23/01, 24/01 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
Memory Consistency Models Slides Shared Memory Consistency Models: A Tutorial
MC Chapters 3,4,5
Transactional Memory Slides TM 2.1, 2.2, 4.1, 4.2
Concurrent Data Structures MP Chapters 3,9,10,13
Testing Concurrent Programs
Performance of Concurrent Programs


References

I have listed (NOT in any particular order) a few popular references.