Advanced interdisciplinary introduction to applied parallel computing on modern supercomputers. Numerical topics include dense and sparse linear algebra, N-body problems, multigrid, fast-multipole, wavelets and Fourier transforms. Geometrical topics include partitioning and mesh generation. Other topics include applications oriented architecture, understanding parallel programming paradigms, MPI, data parallel systems, Star-P for parallel Python and parallel matlab, graphics processors, virtualization, caches and vector processors with hands-on emphasis on understanding the realities and myths of what is possible on the world's fastest machines.

One emphasis for this course will be VHLLs or very high level languages for parallel computing.

A fresh approach to technical computing: Julia programming language. High performance and parallelism from high-level code.

Grading (Tentative)

Homework: 45% (roughly 3 or 4 assignments)

Project: 55% (roughly half semester)

You will need to hand in progress reports, a midterm and final presentation, where the midterm reports progress and is an opportunity for real feedback while the final project can be presented at the end. All reports will be made public and archived unless privacy is specifically requested.