IAM 851 Class Notes#
Here you’ll find the syllabus and class notes for IAM 751/851 “Introduction to High Performance Computing” (2026).
This site is generated using sphinx, a documentation generator originally designed for Python, but also usable for documenting projects using other programming languages, or, in this case, maintaining class notes.
Overview
Foundations
- Class 1 - Intro
- Class 2 - Version Management, Terminals, Editors
- Class 3 - Writing and Organizing Code
- Class 4 - make and Makefiles
- Class 5 - Advanced Build Systems
- Class 6 - Testing and Debugging
- Class 7 - Test Driven Development
- Class 8 - Linear Algebra Project (C)
- Class 9 - Linear Algebra Project (C) continued
- Class 10 - Linear Algebra -- Crash course in C++
- Class 11 - Linear Algebra, bounds checking and debugging
- Class 12 - Linear Algebra with xtensor
- Class 13 - Performance, Profiling, Data Layout
- Class 14 - Algorithmic Scalability, Prepare for Parallel Programming
Parallel Programming
- Class 15 - OpenMP I: Parallel Loops
- Class 16 - OpenMP II: Scalability, Data Sharing
- Class 17 - OpenMP III: Private vs Shared Variables
- Class 18 - OpenMP IV: Critical Sections, Reductions
- Class 19 - OpenMP V: Work Sharing, Performance Example
- Class 20 - Parallel Programming, Introduction to MPI
- Class 21 - MPI I: MPI in 6 functions, sending and receiving messages
- Class 22 - MPI II: Domain Decomposition, Boundaries
- Class 23 - MPI III: Domain Decomposition, Solving the wave equation
- Class 24 - MPI IV: MPI pitfalls and non-blocking communication
- Class 25 - MPI V: Collective operations