CMU 15-418/Stanford CS149: Parallel Computing
Descriptions
- Offered by: CMU and Stanford
- Prerequisites: Computer Architecture, C++
- Programming Languages: C++
- Difficulty: 🌟🌟🌟🌟🌟
- Class Hour: 150 hours
The professor Kayvon Fatahalian used to teach course 15-418 at CMU. After he became an assistant professor at Stanford, he offered a similar course, CS149 at Stanford. In general, the 15-418 version is more comprehensive and has lecture recordings, but CS149's programming assignments are more fashionable. Personally, I watched the recordings of 15-418 but completed the assignments of CS149.
The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems, as well as to teach how to utilize hardwares and software programming frameworks (such as CUDA, MPI, OpenMP, etc.) for writing high-performance parallel programs. Due to the complexity of parallel computing architecture, this course involves a lot of advanced computer architecture and network communication content, the knowledge is quite low-level and hardcore. Meanwhile, the five assignments develop your understanding and application of upper-level abstraction through software, specifically by analyzing bottlenecks in parallel programs, writing multi-threaded synchronization code, learning CUDA programming, OpenMP programming, and the popular Spark framework, etc. It really combines theory and practice perfectly.
Resources
- Course Website: CMU15418, CS149
- Recordings: http://15418.courses.cs.cmu.edu/spring2016/lectures
- Textbook: None
- Assignments: https://gfxcourses.stanford.edu/cs149/fall21, 5 assignments.
Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in PKUFlyingPig/CS149-parallel-computing - GitHub.