Skip to content

CMU 15-418/Stanford CS149: Parallel Computing


  • 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.


Personal Resources

All the resources and assignments used by @PKUFlyingPig in this course are maintained in PKUFlyingPig/CS149-parallel-computing - GitHub.