
# 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](https://www.sphinx-doc.org/), a documentation generator originally designed for Python, but also usable for documenting projects using other programming languages, or, in this case, maintaining class notes.

```{toctree}
   :caption: Overview
   :maxdepth: 1

   Syllabus <syllabus/index>
   Assignments <assignments>
   Project 1 <project1>
   Project 2 <project2>
```

```{toctree}
   :caption: Foundations
   :maxdepth: 1

   Class 1 - Intro <foundations/class1>
   Class 2 - Version Management, Terminals, Editors <foundations/class2>
   Class 3 - Writing and Organizing Code <foundations/class3>
   Class 4 - make and Makefiles <foundations/class4>
   Class 5 - Advanced Build Systems <foundations/class5>
   Class 6 - Testing and Debugging <foundations/class6>
   Class 7 - Test Driven Development <foundations/class7>
   Class 8 - Linear Algebra Project (C) <foundations/class8>
   Class 9 - Linear Algebra Project (C) continued <foundations/class9>
   Class 10 - Linear Algebra -- Crash course in C++ <foundations/class10>
   Class 11 - Linear Algebra, bounds checking and debugging <foundations/class11>
   Class 12 - Linear Algebra with xtensor <foundations/class12>
   Class 13 - Performance, Profiling, Data Layout <foundations/class13>
   Class 14 - Algorithmic Scalability, Prepare for Parallel Programming <foundations/class14>
```

```{toctree}
   :caption: Parallel Programming
   :maxdepth: 1

   Class 15 - OpenMP I: Parallel Loops <parallel/class15>
   Class 16 - OpenMP II: Scalability, Data Sharing <parallel/class16>
   Class 17 - OpenMP III: Private vs Shared Variables <parallel/class17>
   Class 18 - OpenMP IV: Critical Sections, Reductions <parallel/class18>
   Class 19 - OpenMP V: Work Sharing, Performance Example <parallel/class19>
   Class 20 - Parallel Programming, Introduction to MPI <parallel/class20>
   Class 21 - MPI I: MPI in 6 functions, sending and receiving messages <parallel/class21>
   Class 22 - MPI II: Domain Decomposition, Boundaries <parallel/class22>
   Class 23 - MPI III: Domain Decomposition, Solving the wave equation <parallel/class23>
   Class 24 - MPI IV: MPI pitfalls and non-blocking communication <parallel/class24>
   Class 25 - MPI V: Collective operations <parallel/class25>
```


