This course is a first course in algorithms for the solution of large sparse scientific computing problems. We will focus on a set of problems in computational linear algebra that lie at the heart of scientific computing: linear systems of equations, least squares problems, and eigenvalue and singular value computations.
For each problem, we will begin with a discussion of the underlying linear algebra issues, the behavior of an algorithm for solving the problem in floaring point arithmetic, and error analysis. We will also discuss the design of parallel algorithms for these problems on current parallel computers such as the Intel Paragon and the IBM SP-2. These latter topics will make the students aware of the current frontiers of research in these areas, and provide general preparation for work on a research topic in high-performance computing.
The exploitation of sparsity is vital to keep these large-scale problems, with intensive time and storage requirements, tractable. Graph models of the numerical algorithms are necessary to take advantage of sparsity in these computations, and hence the study of these graph algorithms and appropriate data structures will be part of the course. These include chordal graphs, elimination trees and matchings.
The intended audience includes CS students interested in learning about high-performance computing, and students from other departments (engineering, sciences, and mathematics) with computational aptitude and prior programming experience. However, experience on parallel computers is not a prerequisite. In the second half of the course, students will have the opportunity to solve computational problems in parallel as part of a project, either on an available parallel computer, or on distributed memory ensembles of Sparcstations. The programming exercises will not be ``from scratch'' efforts at coding, but will build on public-domain software products.
Prerequisites
Some prior acquaintance with numerical linear algebra and graph algorithms will be assumed. However, depending upon the students enrolled in the class, a ``Breathless Review'' of aspects of these subjects required will be provided as needed. In addition, proficiency in at least one of the two major scientific programming languages - FORTRAN or C - as well as comfort in the Unix environment, is required for success in the course. The high-level interpretive language MATLAB will be introduced and employed in the exercises, to ease the programming effort required in solving sparse matrix problems. No previous familiarity with any particular computer hardware or application area is assumed.
Text and References
A new book by Nick Trefethen of Cornell on Computational Linear Algebra, to be puhed in 1996, will be used for the first part of the course. The second part of the course on sparse matrix algorithms will be taught out of a book that I am writing on Sparse Matrix Algorithms.