Numerical Methods for Partial Differential Equations
CS555 :: Spring 2026
- Class Time: Tuesday/Thursday 12:30-1:45pm [Catalog]
- Class Location: 1035 Campus Instructional Facility (CIF)
- Instructor: Paul Fischer
- Office Hours: Tue. 2:15-4:00
- About the Course
- Lectures
- Quizzes
- Homework
- Final Project
About the Course
Are you interested in the numerical approximation of solutions to partial differential equations? Then this course is for you!
The course covers roughly three topics: the fundamentals of finite difference approximations, an introduction to finite volume schemes, and comprehensive look at finite element methods.
Topics
-
Introduction
- Overview
- FDiff cost examples in 1D/2D/3D
- derivation
- eigenvalues
- error analysis
- Tensor-products
- solvers and eigenvalues
- Cost analysis in d dimensions
-
Timestepping considerations
- Stability/costs
- Survey of timesteppers: EF/EB, Trap/CN, BDFk, RK, exponential
-
Hyperbolic PDEs
- Advection + FDiff: stability/dispersion
- FDiff: equivalent differential equation
- FDiff: upwinding/variable grid spacing
- FVol: conservation/FV methods
- FVol: flux limiters/WENO schemes
- WRTs: finite element methods
- Multiple space dimensions
-
Parabolic PDEs
- Explicit, implicit, semi-implicit
-
Elliptic PDEs
- Poisson FEM in 1D and 2D with tensor products
- Poisson FEM in 2D with triangles
- Stokes FEM in 2D with triangles
-
Special topics
- High-order methods
- Other equations
- Reduced Order Models
Prerequites
The expectation is that you have had a course in numerical methods (like CS450), covering conditioning, numerical linear algebra, numerical quadrature and differentiation, and the basics of numerical methods for ordinary and differential equations. If you do not have this background, please check with the instructor.
In addition, you should have familiarity with Python or Matlab (or Octave). If you do not have this background, please check with the instructor.
The course will provide practical approaches to generating (highly accurate!) approximate solutions to partial differential equations and will explore mathematical underpinnings that give insight into the behavior (i.e., stability and convergence) of these methods. Basic linear algebra will be an important tool in this course. If you have questions about your mathematical preparation for this course, please check with the instructor.
Expected work
The course involves several assignments along with midterm and final project presentations based on material developed over the semester. There is also a strong participation grade based on quizzes, handouts, and other in-class tasks. The tentative grade breakdown is:
Work in teams of two for the Homework and Projects.
- Quizzes, in-class work 10
- Homework 30
- Midterm Project 30
- Final Project 30
This will be finalized in the first week of class.
The course assignments and examples in class will be in Matlab/Octave or Python.
Lectures
| Lecture | Date | Topic | |
|---|---|---|---|
![]() |
01-20 | About the course, classifying PDEs, survey of methods
|
|
![]() |
01-22 | Finite differencing for time dependent problems
|
|
![]() |
01-27 | Finite differences for parabolic problems in 1D
|
|
![]() |
01-29 | Intro to Time-steppers for PDEs
|
|
Homework
Guidelines and files:
- Homework Submission: All homework must be typeset using LaTeX. Use the provided templates to get started, available at homework-netid-N.tex
- Figures: Make sure all figures are clearly labeled with axes, titles, legends, and captions. Each figure must be referenced and discussed within your text for full credit. Be sure to use logscales, where appropriate.
- Originality: Your submitted code and figures must be your own. If you use someone else's work, you must cite it.
- Code-Based Problems: To receive points for problems involving code, your code must reproduce the reported figures and data. No points will be awarded for the Codes that do not generate the reported results.
- Debugging Efforts: If you encounter issues that prevent your code from working as expected, detailed descriptions of your debugging attempts can earn you partial credit.
Midterm / Final Projects
The goal of the these projects is to develop a mini app -- a short computational example of some phenomenon in numerical PDEs. This must be related to topics covered, from finite differencing to finite volume methods to finite element methods. An overarching goal of the mini app is to educate your peers on some nuanced aspect of the topics we have covered (or have skipped). You must work in teams of two on the projects (not solo).
Deliverables for the project will be functioning code with embedded description, discussion, and guide for the audience. You and your project partner will present an overview of up to five minutes (with slides).
The mini app should be built from first principles (but you may use linear algebra solvers, if that is useful).
The rubrics for the projects are as follows.
SP, Statement of Problem
- What is the problem that you are looking at? What is the is point of the the mini app? What interesting aspect of numerical PDEs does your mini app highlight?
- Is the problem clear? Have you provided enough background information for the audience to follow?
ID, Implementation Details
- Is your example well documented?
- Is your mini app reproducible with minimal effort?
- What details are needed to understand the implementation?
R, Results
- Do your results highlight the overarching goal of your mini app?
- What do you observe for this problem and discretization, for example?
- Are your results clear? Do you label important details? Do you use relevant and consistent color schemes?
- Carefully select which visualizations to show. We do not need to see everything, only figures that highlight some aspect of the goal of your mini app.
C, Reflections
- What did you learn? What worked, what needs improvement, what are the next steps or future directions?
- Provide a list of future directions at the end of your app -- what could be looked at next and what are some of the limitations of your implementation?
Slides should focus on
- (3) Do you have a clear summary and goals of your miniapp?
- (2) Do you provide a sufficient level of detail in showing off your mini app?
- (2) Do you highlight a few (but not all) of the results in your mini app?
- (3) Is your presentation practiced and on time? Is your slide deck of high quality?
Code details.
- The code should be your own.


