Email: hzhang@mcs.anl.gov

** Course Description: **
This course is designed for graduate and upper-level undergraduate students
in the fields of science and engineering.
The objective is to introduce the
essential numerical algorithmic ideas and provide
programming practice on advanced scientific
computer architecture.
The course contains following subjects:

- Overview of parallel computing.
- Parallel and distributed numerical computation.
- Numerical iterative techniques for solving large sparse systems.
- Numerical software design, analysis, implementation and performance evaluation, including discussions on the object-oriented programming techniques.

**Selected examples of student project:**

- "Hydraulic Transients in Networks", Daniel Adrian Maldonado and Llus Antoni Jimenez Rugama, 2014
- "Implementation and parallelization of grid-matched astrometry", M. Otten, A. Seymour and M. Warren, 2012
- "Developing Efficient Linked List Operations in the PETSc Library", Surtain Han, 2012
- "Simulation of Microstructures on Parallel Machine Using PETSc", A. K. Barue, 2010
- "A Study on the Computational Scaling of LMI Constrained Optimization", B. Nicholson, 2010
- "Three Phase Instantaneous Time Domain Simulation of Electiric Power Systems Using PETSc", S. Abhyankar, 2008
- "Build a Low Cost Parallel Computing Cluster", N. Johnston and M. McCourt, 2006

Grading: Homework: 40%, Class participation: 10%, Final project: 50%.

** References: **

- Numerical Linear Algebra, by Lloyd N. Trefethen and David Bau, III, SIAM ISBN 0-89871-361-7
- Scientific Computing, An Introductory Survey, 2nd Edition, by Michael T. Heath
- Iterative Methods for Sparse Linear Systems, by Yousef Saad
- Using MPI: Portable Parallel Programming with the Message-Passing Interface, by W. Gropp, E. Lusk, and A. Skjellum.
- PETSc Users Manual, http://www.mcs.anl.gov/petsc ANL-95/11 - Revision 3.5, Argonne National Laboratory, 2014, by S. Balay et al.
- Unix Tools http://cs2042.thefutureofmath.com
- Design Patterns, by E. Gamma, R. Helm, R. Johnson and J. Vlissides
- Introduction to Parallel Computing https://computing.llnl.gov/tutorials/parallel_comp/
- Introduction to High Performance Scientific Computing, by Victor Eijkhout http://www.tacc.utexas.edu/~eijkhout/istc/istc.html

Lecture Notes and Assignments: blackboard.iit.edu