Numerical Methods for Partial Differential Equations
CS555 :: Spring 2017
- Class Time/Place: Wednesday/Friday 11:00am-12:15pm Catalog, 1304 Siebel Center
- Class URL: go.cs.illinois.edu/cs555
- Web forum: https://piazza.com/illinois/spring2017/cs555
- Instructor: Luke Olson
- TA: James Stevens, Office Hours: Siebel 0207, Wed. 10:00am-11:00am, Fri 12:30pm-1:30pm
- Syllabus and Calendar
- Grading Policy
This course covers the basics of finite difference schemes, finite volume schems, and finite element methods (majority). In addition, we'll cover some advanced topics such as discontinuous Galerkin and least-squares.
One of the goals of this course is to build intuition for these methods. We'll be using Python and will be providing background for many of the computational and mathematical concepts in the course. As such, you do not need to be an expert in PDEs or in coding. But you should have a course in numerical analysis as your background (CS450), be comfortable with differential equations, and have some coding experience.
The course is divided in roughly parts: advection and elliptic. This is of course a generalization, but it does allow us to focus on finite difference/finite volume methods for one part of the course and finite elements for another part. In addition to model problems we'll look at Stokes and other equations in order to develop a full understanding of the methods.
The course involves several homeworks (usually bi-weekly) and two projects: a midsemester project on finite volume methods and a final project on finite element methods. There is also a strong participation grade based on your attendence, in-class, and pre-class work.
The course homeworks and examples in class will be in Python. In particular, we'll use numpy, scipy, and Dolfin from the FEniCS Project.
Computing
We will be using Python with the libraries numpy, scipy and matplotlib for assignments. No other languages are permitted. Python has a very gentle learning curve, so you should feel at home even if you've never done any work in Python.
Virtual Machine Image
While you are free to install Python and Numpy on your own computer to do homework, the only supported way to do so is using the supplied virtual machine image.
Python and Numpy Help
- Python tutorial
- Facts and myths about Python names and values
- Dive into Python 3
- Project Euler (Lots of practice problems)
- Introduction to Python for Science
- The SciPy lectures
- The Numpy MedKit by Stéfan van der Walt
- The Numpy User Guide by Travis Oliphant
- Numpy/Scipy documentation
- More in this reddit thread
- Spyder (a Python IDE, like Matlab) is installed in the virtual machine. (Applications Menu > Development > Spyder)
- An introduction to Numpy and SciPy
- 100 Numpy exercises
Grading Policies
The course involves several homeworks (roughly bi-weekly) and two projects, a midsemester project on finite volume methods and a final project on finite element methods. There is also a strong participation grade based on your participation (attendence through in-class activities) and several out-of-class, but smaller-than-homework assignments. The grade breakdown is:
- Homeworks (40)
- Projects (40)
- Participation (20)