CSC 4700: Parallel C++ for Scientific Applications
Spring Semester 2025 Live lectures in 1212 PFT, Tue/Thu 10:30am-11:50am CT
CSC 4700: Parallel C++ for Scientific Applications is a course that focusses on the parallel implementation of computational mathematics problems using modern parallel C++. The aim of this course is to learn how to quickly write useful and efficient C++ programs. The students will learn how to use high-level data structures, iterators, strings, and streams (including interactive and file I/O) of the C++ ISO Standard library. In addition, we will look into using highly-optimized linear algebra libraries since the course teaches to solve problems, instead of explaining low-level C++ and scientific computing algorithms.
For more information see:
- Lectures
- Lecture 1 - Welcome and Introduction
- Development Environment, Interlude - C++
- Lecture 2 - Working with Types
- Lecture 3 - Monte Carlo Methods
- Lecture 4 - Fixed Point Calculations and Root Finding
- Lecture 5 - The C++ Standard Library, Containers and Algorithms
- Lecture 6 - The C++ Standard Library, Iterators and Ranges
- Lecture 7 - Fractals
- Lecture 8 - Linear Algebra in C++
- Lecture 9 - Roofline Model, Sparse Matrix Computation
- Lecture 10 - Introduction to Parallelism
- Lecture 11 - Threads & Synchronization
- Lecture 12 - Data Parallelism (1)
- Lecture 13 - Data Parallelism (2)
- Lecture 14 - Tasks & Concurrency (1)
- Lecture 15 - Tasks & Concurrency (2)
- Lecture 16 - Introduction to Distributed Parallelism
- Lecture 17 - Introduction to GPU Programming (using CUDA)
- Lecture 18 - GPU Programming, the C++ Way
- Lecture 19 - Distributed Parallelism with HPX (1)
- Lecture 20 - Distributed Parallelism with HPX (2)
- Lecture 21 - Integrating C++ and Python
- Assignments
- Assignment 0 (due January 27, 11:59 pm)
- Assignment 1 (due February 17, 11:59 pm)
- Assignment 2 (due March 10, 11:59 pm)
- Assignment 3 (due April 28, 11:59 pm)
-
Course Project (due April 28, 11:59 pm)
- Course material:
- Resources