Computer Science 290H, Fall 2004:
Sparse Matrix Algorithms

John Gilbert

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

Slides from class
Class schedule and reading assignments
Final project ideas

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.



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.


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

You should know something about basic data structures (lists, queues, trees); basic linear algebra (matrices, vectors, Gaussian elimination); and should have some programming experience.