## CS 219 Spring 2018: Final Project Ideas (presentation schedule)

These are just ideas -- please see me if there's something else you'd like to work on, or if you'd like to discuss any of these. Let me know by next Monday 7 May what your project will be and who will be working on it.

Each project must turn in a one-page progress report by Wednesday 16 May, and a final report of 10-15 pages by Wednesday 13 June. Each project will give a short presentation in the next-to-last week of class (signup sheet). We can also arrange for experimental projects to present a demo in the lab.

Experimental and application projects can be solo or a group of two students. Survey projects must be solo.

Algorithm experiments. For an algorithm experiment, you will implement and compare different approaches to a sparse algorithm. Here are a couple of possibilities; email me if you're interested in something not on the list.

• Use the Graph BLAS (as implemented in SuiteSparse) to implement one or more of the graph algorithms used in sparse Cholesky factorization, for example:
• Symbolic factorization (given a graph, compute the filled graph).
• Symmetric elimination orders: minimum degree, nested dissection, reverse Cuthill-McKee.
• Elimination tree (given a graph, compute the elimination tree without computing the filled graph).
• Use sparse matrices to implement some of the graph algorithms from Jon Berry's challenge list, first in Matlab and then using SuiteSparse GraphBLAS.
• Devise and experiment with hill-climbing strategies that take a specified sparse Cholesky elimination order and try to improve it.
• Write a levels-of-fill incomplete factorization preconditioner for Matlab, and experiment with using it in an iterative method.

Application experiments. An application experiment is any problem that comes from computational science and has a challenging linear system in it; you will experiment with methods for the sparse computation. The application should be one you are already familiar with, from your research or another class or a collaboration. Talk to me if you'd like to do this.

Survey projects. For a survey project, you will read a few research papers on a sparse matrix topic not covered in class. Here are some possibilites. Some of them come with a link to a paper, and I can give you references for the others if you'd like. In each case you will end up reading a few related papers for background and comparison as well. Email me if you're interested in something not on the list.

• Nearly-linear-time algorithms for solving linear systems using support-theory preconditioning. (See CS 219 reference page.)
• Quantum computing for solving linear equation systems. (paper: Harrow, Hassidim, and Lloyd)
• Symmetric indefinite factorization: A = L*D*L' where D is block diagonal with 1-by-1 and 2-by-2 blocks.
• Sparse QR factorization and least squares problems.
• The real details of UMFpack, Tim Davis's unsymmetric multifrontal method.
• Mesh partitioning algorithms: geometric, spectral, multilevel.
• Parallel multifrontal algorithms, e.g. MUMPS.
• Graph coloring for sparse Jacobian estimation.
• Ordering methods for preconditioned conjugate gradient methods applied to unstructured grid problems. (paper: D'Azevedo, Forsyth, and Tang)
• Ordering, anisotropy, and factored sparse approximate inverses. (paper: Bridson and Tang)
• Preconditioning symmetric indefinite systems using weighted bipartite matching. (paper: Hagemann and Schenk, paper: Duff and Koster)
• Maximum-weight basis preconditioners. (paper: Boman, Chen, Hendrickson, and Toledo)
• Preconditioning symmetric indefinite systems from optimization problems. (paper: Haws and Meyer)