# CS431: Concurrent Programming

## 课程简介

- 所属大学：KAIST
- 先修要求：Rust 编程基础与对并发的初步了解
- 编程语言：Rust
- 课程难度：🌟🌟🌟🌟
- 预计学时：50 小时

CS431是一门讨论并发编程的课程，主要使用 Rust 语言。课程内容主要包括理论与实践两个部分。理论部分聚焦于建立并发情形下的编程模型，而实践部分则主要是理解 Rust 相关库中锁与无锁数据结构的实现原理。

这门课程同时配有一系列代码量不大但并不简单的作业来巩固你对并发编程的理解，从基于锁的并发安全缓存设计和链表，到无锁的哈希表和著名的 [hazard pointer](https://ieeexplore.ieee.org/document/1291819). 和众多高质量课程一样，这些作业质量较高且配有详细的本地测试，适合自学。

这门课程比我预想的要深入的多，我所知晓的关于自旋锁，互斥锁的知识在该门课程中都是最基础的，而对于 promising semantics, 访存模型和无锁数据结构的介绍让我对并发和 Rust 都有更深入的理解。

## 课程资源

- 课程网站：[Website](https://github.com/kaist-cp/cs431)
- 课程视频：[Youtube](https://www.youtube.com/playlist?list=PL5aMzERQ_OZ9j40DJNlsem2qAGoFbfwb4)
- 课程教材：[Slides](https://docs.google.com/presentation/d/1NMg08N1LUNDPuMxNZ-UMbdH13p8LXgMM3esbWRMowhU/edit?usp=sharing)
- 课程作业：[Homework](https://github.com/kaist-cp/cs431/tree/main/homework)
