teaching
CSE 6230 (also CS 6230)
Fall 2013
T&Th 4:30–6p
Klaus Advanced Computing Building, Room 1443
High-Performance Computing: Tools and Applications.

The goal of this course is to give students hands-on experience with programming high-performance computer systems, from single-processor multicore platforms up to large-scale distributed memory multi-CPU/GPU systems. In contrast to CSE 6220: Intro to HPC, which emphasizes the foundations of parallel algorithms, this course focuses on practical aspects of programming tools, performance analysis, and performance tuning, both with respect to parallelism and memory hierarchies.

CSE 6220 / CS 4225
Spring 2013
T&Th 3–4:30p
Klaus Advanced Computing Building, Room 2443
Introduction to High-Performance Computing.

The goal of this course is to give you solid foundations for developing, analyzing, and implementing parallel and locality-efficient algorithms. This course focuses on theoretical underpinnings, in contrast to CSE 6230: HPC Tools & Apps, which emphasizes deep, hands-on, low-level programming experience. To give a practical feeling for how algorithms map to and behave on real systems, we will supplement algorithmic theory with hands-on exercises on modern HPC systems, such as Cilk Plus or OpenMP on shared memory nodes, CUDA for graphics co-processors (GPUs), and MPI and PGAS models for distributed memory systems.

CSE 6230 (also CS 6230)
Fall 2012
T&Th 4:30–6p
Klaus Advanced Computing Building, Room 2443
High-Performance Computing: Tools and Applications.

The goal of this course is to give students hands-on experience with programming high-performance computer systems, from single-processor multicore platforms up to large-scale distributed memory multi-CPU/GPU systems. In contrast to CSE 6220: Intro to HPC, which emphasizes the foundations of parallel algorithms, this course focuses on practical aspects of programming tools, performance analysis, and performance tuning, both with respect to parallelism and memory hierarchies.

CS 4225
Spring 2012
MWF 10–11a
Clough, Room 131
Intro to High-Performance Computing.

The goal of this course is to help students become fluent in the fundamentals of high-performance computing, through a mix of theory and practice that covers performance analysis, the design of parallel and I/O-efficient algorithms, basics of parallel machine architectures, and hands-on programming in both shared and distributed memory models. This semester, the instructors will use peer instruction and hands-on labs and projects to facilitate fluency and understanding.

CSE 6230 (also CS 6230)
Fall 2011
T&Th 9:30–11a
Instructional Center, Room 113
High-Performance Computing: Tools and Applications.

The goal of this course is to give students hands-on experience with programming high-performance computer systems, from single-processor multicore platforms up to large-scale distributed memory multi-CPU/GPU systems. In contrast to CSE 6220: Intro to HPC, which emphasizes the foundations of parallel algorithms, this course focuses on practical aspects of programming tools, performance analysis, and performance tuning, both with respect to parallelism and memory hierarchies.

CSE 6730 / CS 4335
Spring 2011
M&W 4:30–6p
Klaus Advanced Computing Building, Room 2447
Co-Instructors: Richard Fujimoto, Richard Vuduc
Modeling and Simulation: Fundamentals and Implementation. This course will provide students the necessary skills to formulate conceptual and mathematical models of systems, to transform these models into efficient simulation software, and to apply the resulting simulator to attacking contemporary problems in science and engineering. Students will learn the basic underlying principles behind simulation models, and develop a conceptual and practical understanding of data structures, algorithms, software, mathematics, and best practices concerning the development of both the domain-specific simulation model as well as the underlying domain-independent simulation engine and algorithms.
 
The course is structured around a problem-based learning approach. This means the course is focused on solving specific, challenge problems. Students will learn course topics while attempting to solve these problems. They will be required to identify and acquiring the necessary knowledge and skills in the context of these problems. The problem-based learning approach is meant to emulate how modeling and simulation is applied in practice—as a problem solving methodology rather that simply demonstrating mastery of basic skills conveyed through lectures and course readings.
 
Note: The course website is hosted on T-Square, and is accessible only to students enrolled in the course.
CSE 8803-HPC
Fall 2010
T&Th 9:30–11a
Architecture (East), Room 309
Hot Topics in Parallel Computing. This course is a graduate-level seminar that surveys current topics in high-performance parallel computing, including new developments in parallel algorithms, programming models, compilers, run-time systems, architectures, applications, software engineering, performance analysis and tuning.
 
There are no formal lectures. Instead, students read approximately 2-4 research papers each week and lead in-class discussions. The course culminates in a major term project, which is expected to be at the level of a research conference paper submission.
 
Note: Access to the course website is by invitation only, and intended for use by students enrolled in the course or approved auditors.
CS 4225
Spring 2010
M/W/F 10–11a
College of Computing Building (CCB), Room 102
Introduction to High-Performance Computing. The goal of this course is to provide an introduction to the algorithmic and software tools and techniques needed to implement effective, high-performing programs on modern parallel computing systems. The course emphasizes algorithms, programming models for shared memory architectures. Students are expected to complete several hands-on assignments.
CSE 6230 (also CS 6230)
Fall 2009
T&Th 12–1:30p
Klaus Advanced Computing Building, Room 2447
High-Performance Computing: Tools and Applications. The goal of this course is to provide a graduate-level introduction to high-performance parallel, distributed, network computing. The emphasis is on a survey of current trends in parallel computer architectures, programming models (compilers, languages, and libraries), and systems (operating systems and I/O). The course includes a number of hands-on assignments and a final project.
Optimizing algorthms for the memory hierarchy.
Feb. 18&20, 2009
Part 1: Theoretical foundations (PDF; 1.3 MB)
Part 2: Cache architectures (PDF; 2.9 MB)
 
I presented these slides as guest lectures for Prof. George Biros' HPC class (Spring 2009).
CS 4643 / MATH 4641
Spring 2009
M&W 4:30–6p
Lamar Allen Sustainable Education Bldg., Rm. 110
Numerical Analysis II. The goal of this course is to introduce you to some of the modern numerical methods for solving ordinary and partial differential equations. We will be particularly interested in the intersections between the theory of numerical analysis and ideas from computer science, including the effects of finite-precision arithmetic and parallel computing. The course follows CS 4803 / MATH 4640: Numerical Analysis I, which was last offered in Fall 2008 by Prof. Haesun Park [link].
CSE 6230 (also CS 6230)
Fall 2008
T&Th 12–1:30p
College of Computing Bldg., Room 52
High-Performance Computing: Tools and Applications. The goal of this course is to provide a graduate-level introduction to high-performance parallel, distributed, network computing. The emphasis is on a survey of current trends in parallel computer architectures, programming models (compilers, languages, and libraries), and systems (operating systems and I/O). The course includes a number of hands-on assignments and a final project.
Georgia Tech Summer CRUISE Program
June 6, 2008
Talk: Parallel programming models

This talk is an introductory survey to some of the programming models used in high-performance computing today.
CSE 8803 PNA
Spring 2008
T&Th 9:35–10:55a
Mol. Sci. Engr. Bldg., Room G011
Parallel numerical algorithms. This course surveys parallelization techniques and issues for core numerical algorithms in computational science, including dense and sparse linear algebra computations, numerical solution of ordinary and partial differential equations, signal processing, numerical optimization, and particle simulations. About 2/3 of the course will be devoted to fundamental techniques; the remaining 1/3 will cover current research, with guest lectures on novel algorithms and the interactions between algorithms and machine architectures, among other topics. Students will complete a collaborative term project.

The course is open to graduate and advanced undergraduate students, and students in all science and engineering disciplines are encouraged to attend. Some exposure to numerical algorithms (e.g., CS 8803 NMC) and/or basic parallel programming is desirable.