This is the GitHub repo for the course CS6868 Concurrent Programming taught at IITM in the Spring semester 2026. The course website is here: https://kcsrk.info/cs6868_s26/.
This course teaches the fundamentals of concurrent and parallel programming, with a focus on shared-memory multiprocessor systems. Topics include:
- Principles of concurrent programming
- Mutual exclusion and synchronization
- Concurrent data structures
- Lock-free and wait-free algorithms
- Memory models and consistency
- Parallel programming patterns
- Effect handlers
- Nested parallelism, Asynchronous I/O
- Practical implementations using OCaml 5's multicore features
- Safe parallel programming with OxCaml
The course uses OCaml 5 with itts native support for parallelism via domains and concurrency via effect handlers.
lectures/- Lecture materials and code examplesassignments.md- Course assignmentsschedule.md- Course scheduleresources.md- Additional learning resources
OCaml parts of CS3100 or equivalent experience with functional programming and basic understanding of operating systems and computer architecture.
git clone https://github.com/kayceesrk/cs6868_s26
cd cs6868_s26We will use OCaml 5.4 or later. Follow the instructions at https://ocaml.org/docs/install.html to install OCaml and the platform tools. Use Linux, macOS, *BSD or WSL on Windows for best compatibility. Some of the later lectures will need Linux tools. At IITM, you can use the DCF machines, which have the tools installed.
Below is the instruction for Linux/macOS systems.
bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh)"
opam init # initialize opam
opam switch create 5.4.0 # create a new switch with OCaml 5.4.0
opam install ocaml-lsp-server ocamlformat utop domainslib qcheck-lin qcheck-stm # install course packagesIt is recommended that you use VSCode with the OCaml Platform extension for development.
Refer to individual lecture directories for specific setup instructions.
The course material is inspired by and adapted from various sources, including:
- The Art of Multiprocessor Programming, 2nd Edition by Maurice Herlihy, Nir Shavit, Victor Luchangco, and Michael Spear
- YSC4231: Parallel, Concurrent and Distributed Programming, taught by Ilya Sergey at Yale NUS College.
- Control structures in programming languages: from goto to algebraic effects, Xavier Leroy.