# CS431: Concurrent Programming

## Descriptions

- Offered by: KAIST
- Prerequisites: Basic Understanding of Concurrency and Rust Programming
- Programming Languages: Rust
- Difficulty: 🌟🌟🌟🌟
- Class Hour: 50 hours

CS431 is a course about concurrent programming, mainly using Rust. The course consists of two parts: theory and practice. The theory part focuses on building a programming model under concurrent situations, while the practice part mainly focuses on understanding the implementation principles of locks and lock-free data structures in Rust-related libraries.

This course is accompanied by a series of assignments with small code size but not simple to consolidate your understanding of concurrent programming, from the design of concurrent safe cache and linked list based on locks, to lock-free hash table and the famous [hazard pointer](https://ieeexplore.ieee.org/document/1291819). Like many high-quality courses, these assignments are of high quality and come with detailed local tests, which are suitable for self-study.

This course is much more in-depth than I expected. The knowledge I know about spin locks and mutex locks is the most basic in this course, while the introduction of promising semantics, memory model and lock-free data structures gives me a deeper understanding of concurrency and Rust.

## Course Resources

- Course Website:[Website](https://github.com/kaist-cp/cs431)
- Recordings:[Youtube](https://www.youtube.com/playlist?list=PL5aMzERQ_OZ9j40DJNlsem2qAGoFbfwb4)
- Textbooks: [Slides](https://docs.google.com/presentation/d/1NMg08N1LUNDPuMxNZ-UMbdH13p8LXgMM3esbWRMowhU/edit?usp=sharing)
- Assignments: [Homework](https://github.com/kaist-cp/cs431/tree/main/homework)
