Teaching

AMATH 483/583: High-Performance Scientific Computing
Introduction to hardware, software, and programming for large-scale scientific computing. Overview of multicore, cluster, and supercomputer architectures; procedure and object oriented languages; parallel computing paradigms and languages; graphics and visualization of large data sets; validation and verification; and scientific software development.
Spring 2017, Spring 2018, Spring 2019, Spring 2020
CSEP 524: Parallel Computation
Survey of parallel computing including the processing modes of pipelining, data parallelism, thread parallelism, and task parallelism; algorithmic implications of memory models; shared memory and message passing; hardware implementations; bandwidth and latency; synchronization, consistency, interprocessor communication; programming issues including implicit and explicit parallelism, locality, portability.
Autumn 2018
P536: Advanced Operating Systems (Indiana University)
Advanced topics in operating systems, such as: multi-tasking, synchronization mechanisms, distributed system architecture, client-server models, distributed mutual exclusion and concurrency control, agreement protocols, load balancing, failure recovery, fault tolerance, cryptography, multiprocessor operating systems.
Various 2001-2016
B524: Parallelism in Programming Languages and Systems (Indiana University)
Fundamentals of parallel computation, with an emphasis on parallel programming methodology and programming languages. Topics include: Parallel algorithms. Major paradigms for parallel software construction: data parallelism, task/thread parallelism and CSP. Compiling programs for parallel computers.
Various 2001-2016
High Performance Computing (Indiana University, taught with Thomas Sterling)
Students will learn about the development, operation, and application of HPC systems prepared to address future challenges demanding capability and expertise. The course combines critical elements from hardware technology and architecture, system software and tools, and programming models and application algorithms with the cross-cutting theme of performance management and measurement.
Various 2011-2016
Computational Photography (Indiana University)
Theory of ray optics, light transport, plenoptic function. Light capture, CCDs, color, demosaicing. Plenoptic camera design. Radon transform, central slice theorem, Fourier slice refocusing. The focused plenoptic camera. Resolution, rendering algorithms, stereo, GPUs.
Fall 2011