This course will survey modern fast numerical algorithms with emphasis on solvers for partial differential equations. Despite the rapid advances in computing capabilities, numerous computational problems that arise in sciences and engineering are intractable without optimal numerical solvers. In this course, we will learn how to identify computational bottlenecks and apply suitable techniques for resolving them. Hands-on examples and case studies from various disciplines will be part of the course.


The class will meet on Tuesdays and Thursdays, 10:00 -- 11:30am at 553 Dennison building.
Office hours: Wednesdays, 9am - noon at 4856 East Hall.


The grade will be entirely based on 3 or 4 projects and class participation. For the most part, students can chose projects from their own research areas as well as suggest topics for group projects.


Basic theory of ODEs/PDEs, linear algebra and programming experience. However, we will provide a short review on the necessary background.


  • Complexity analysis in scientific computing 
    Review of linear & nonlinear solvers 
    Krylov subspace methods

  • Cartesian grid methods 
    Multigrid and multiresolution methods

  • Fourier spectral methods 
    Nonuniform FFTs
    Butterfly algorithms
    Ewald summation

  • Adaptive algorithms
    Tree codes
    Fast multipole methods
    Fast Gauss transform