## Computer Science 290H, Fall 2004: Sparse Matrix Algorithms

### John Gilbert

Tue/Thu 3:15-4:30
Trailer 932
Enrollment code 54791

Homework 0 (due Sun 3 Oct)
Homework 1 (due Fri 15 Oct) (hint)
Homework 2 (due Sun 31 Oct)
Homework 3 (due Sun 21 Nov)

This course will study the fundamentals of sparse matrix methods from the point of view of both discrete and numerical algorithms.

Sparse matrices are a basic tool of computational science and engineering. They show up in applications ranging from models of the physical world to web search and information retrieval. Using them efficiently involves techniques from linear algebra, graph algorithms, and computer architecture.

Sparse matrix algorithms are fascinating (to me at least :) because they combine two languages that are often quite different, those of numerical computation and of graph theory. One result is that nobody knows it all -- there is always something new to be learned by trying to speak the language you're not expert in.

Students will do homework assignments and a term project. The term project can be either an application to a real computational science problem, an algorithms implementation experiment, or a theoretical or survey paper.

Graduate students who are interested in working with me should take this course.

Syllabus:

• The basics:
• Data structures for sparse matrix manipulation
• Graphs and matrices
• Sparse Gaussian elimination:
• Elimination trees, symbolic factorization, structure prediction
• Symmetric, nonsymmetric, and symmetric indefinite systems
• High-performance considerations:
• Cliques and chordal graphs
• Cache behavior, supernodal and multifrontal algorithms
• Orderings for low fill:
• Nested dissection
• Graph and mesh partitioning
• Other approaches to ordering
• Structural decompositions:
• Block triangular form, Dulmage-Mendelsohn decomposition
• Matching and depth-first search
• Strong Hall matrices
• Topics:
• Least squares problems
• Incomplete-factorization preconditioning
• Parallel sparse matrix methods

Text:

For the first half of the course we'll use a draft of the new edition (to appear) of Computer Solution of Sparse Positive Definite Systems, by A. George, J. Liu, and E. Ng. I will hand out chapters of this, and also assign readings from the literature. Several background references will be on reserve at the library.

Prerequisites:

I expect students with a variety of backgrounds, so willingness to learn is the main prerequisite. I hope students will have one of:

• an upper-level numerical linear algebra course like CS 211A, or
• an upper-division course in graph algorithms like CS 130B, or
• some experience with a computational problem in an engineering or scientific field.
You should know something about basic data structures (lists, queues, trees); basic linear algebra (matrices, vectors, Gaussian elimination); and should have some programming experience.