Textbooks
I will assign reading in these three books, which will
be on reserve at the library.
The text of Saad's book is also available
online.
They and several of the other references are published by
SIAM,
the Society for Industrial and Applied Mathematics.
UCSB students can sign up for
free
student membership in SIAM,
which gives you a big discount on their book prices (and is a good
idea for lots of other reasons too).
 T. Davis.
Direct
Methods for Sparse Linear Systems. SIAM, 2006.
This is a concise but thorough introduction to most of the
basic algorithms for sparse direct solvers.
It includes C code in a spartan but readable style;
all the code (complete with Matlab interfaces) is on the book's web site.
 Y. Saad.
Iterative
Methods for Linear Systems. SIAM, second edition 2003.
There is also a PDF
online.
A comprehensive background on iterative methods, especially strong
on incomplete factorization preconditioning for nonsymmetric problems.
 W. Briggs, V. Henson, and S. McCormick.
A
Multigrid Tutorial. SIAM, second edition 2000.
A really excellent tutorial. The text isn't online but this home
page includes a good set of slides that follows the book.
Other books
 R. Barrett and 9 other authors.
Templates
for the Solution of Linear Systems:
Building Blocks for Iterative Methods. SIAM, 1994.
The full text is also available online in
postscript and
html
without charge.
This contains very concise but very useful descriptions of many
iterative methods, with a little on preconditioning.
 A. Greenbaum.
Iterative Methods for Solving Linear Systems.
SIAM, 1997.
This contains a wonderfully thorough and quite readable exposition
of the theoretical background for the Krylov subspace iterative methods,
plus a briefer overview of preconditioners, multigrid,
and domain decomposition.
 A. George and J. Liu.
Computer Solution of Sparse Positive Definite Systems.
PrenticeHall, 1981.
This is the classic work on sparse Cholesky factorization,
introducing the graphtheoretic approach.
It was written before elimination trees, supernodal and multifrontal methods,
and the modern implementations of minimum degree and graph partitioning.
 I. Duff, A. Erisman and J. Reid.
Direct Methods for Sparse Matrices.
Oxford University Press, 1986.
This is especially strong on sparse nonsymmetric methods,
though again it is somewhat out of date.
 A. George, J. Gilbert, and J. Liu.
Graph Theory and Sparse Matrix Computation.
SpringerVerlag, 1993.
This is a broad collection of papers.
 B. Smith, P. Bjorstad, and W. Gropp.
Domain Decomposition:
Parallel Multilevel Methods for Elliptic Partial Differential
Equations.
Cambridge University Press, 1996.
A comprehensive book on various domain decomposition methods and multigrid.
 K. Sigmon and T. Davis.
Matlab Primer.
CRC Press, sixth edition 2002.
A good introduction to Matlab, concise but thorough.
 J. Kepner and J. Gilbert, eds.
Graph Algorithms in the Language of Linear Algebra.
SIAM, 2011.
Using sparse matrices to compute with graphs, instead of the other way around.
 J. Demmel.
Applied
Numerical Linear Algebra. SIAM, 1997.
This is a wonderful book and you should buy it if you plan
to do anything in computational science or numerical analysis.
It has an excellent chapter on conjugate gradients, but no
sparse direct methods and not much on preconditioning.
 L. Trefethen and D. Bau.
Numerical Linear Algebra.
SIAM, 1997.
This is my favorite book on the numerical aspects of
linear systems, eigenvalues, and their algorithms.
Nothing on sparse direct methods,
but every sparse matrix person should read it anyway.
 G. Golub and C. Van Loan.
Matrix Computations.
Johns Hopkins University Press, third edition 1996.
A very careful and thorough reference on numerical linear algebra.
Papers (this list may grow during the quarter)
 J. Shewchuk,
An introduction to the conjugate gradient
method without the agonizing pain. (What it says. A good paper.)
 Michele Benzi's
survey of preconditioning.
 References on combinatorial preconditioning:
 Dan Spielman's lecture notes,
and the rest of his excellent spectral graph theory course.
 Sivan Toledo and Haim Avron's book chapter on
combinatorial preconditioning.
 Doron Chen and Sivan Toledo's experiments
with the original Vaidya support graph preconditioners.
 Erik Boman and Bruce Hendrickson,
Support theory for preconditioning.
A very clean linear algebraic framework for combinatorial preconditioning.
 Erik Boman, Doron Chen, Bruce Hendrickson, and Sivan Toledo,
Maximumweightbasis preconditioners.
Extends support theory to factorwidth2 (i.e. symmetric diagonally dominant) matrices.
 Dan Spielman and ShangHua Teng,
Nearlylinear time algorithms for preconditioning and solving symmetric, diagonally dominant linear systems.
An elaborate and beautiful theoretical result; the work of teasing out a practical method is still going on.
 Ioannis Koutis, Gary L. Miller and Richard Peng,
Approaching optimality for solving SDD systems.
A large step toward making the SpielmanTeng approach practical.

Jon Kelner, Lorenzo Orecchia, Aaron Sidford, and Allen Zhu.
A simple, combinatorial algorithm for solving SDD systems in nearlylinear time.
A strikingly simple method (not preconditioned CG) that uses some ideas from support theory.
 References on graph algorithms and linear algebra:
 References on multigrid and domain decomposition:

MGNet home page.
(A repository of all sorts of multigrid software, tutorials, papers, and information.)
Software

CSparse,
a comprehensive library of C sparse matrix routines by Tim Davis that
can be used either standalone or with Matlab.

The mesh
partitioning toolbox,
which includes utilities for generating grid graphs,
analyzing elimination orders, plotting graphs and
elimination trees, and nested dissection ordering.
Includes a Matlab interface to the Metis partitioning
and ordering software.

TAUCS,
a library of software by Sivan Toledo's group
at TelAviv that contains direct solvers and many different
preconditioners, including several supportgraph preconditioners.

SuperLU,
a library of sparse direct solvers for both symmetric and
nonsymmetric problems. In addition to sequential code,
SuperLU includes a multithreaded code for sharedmemory
machines and a messagepassing MPI code for distributedmemory
machines.