**Available Spring 2015**

Math 6590.352, Applications of Parallel Computing, taught by Professor

Brunson:

OSU with XSEDE and the University of California, Berkeley is pleased to offer this online course on parallel computing for graduate students and advanced undergraduates from diverse disciplines. Students should have some programming experience as a prerequisite. This is a multi-university course that will be managed and instructed locally by Dana Brunson. The course runs from January 20, 2015 to May 8, 2015. (OSU schedule: Jan 12 - May 8)

This course teaches both graduate and advanced undergraduate students from diverse departments how use parallel computers both efficiently and productively. The latter is increasingly important since essentially all computers are (becoming) parallel, from supercomputers to laptops. So beyond teaching the basics about parallel computer architectures and programming languages, we emphasize commonly used patterns that appear

in essentially all programs that need to run fast. These patterns include both common computations (e.g. linear algebra, graph algorithms,

structured grids, ...) and ways to easily compose these into larger programs. We show how to recognize these patterns in a variety of practical problems, efficient (sometimes optimal) algorithms for implementing them, how to find existing efficient implementations of

these patterns when available, and how to compose these patterns into larger applications. We do this in the context of the most important parallel programming models today: shared memory, distributed memory, GPUs, and cloud computing. We also present a variety of useful tools for debugging correctness and performance of parallel programs. Finally, we have a variety of guest lectures by a variety of experts, including parallel climate modeling, astrophysics, and other topics. The course will be taught online and includes lecture materials, quizzes, and programming exercises. As a prerequisite students should ideally have some programming experience in C or similar language.