Numerical Methods (cspp58001)

Winter 2012




Professor: Andrew Siegel
Location : Reyerson 277
Time : Mon 5:30-8:30
Office: Ry175-B
Email:asiegel@cs.uchicago.edu
Office Hours: Mon 3:30-5:30 and by appointment

TA: Kyle Felker
email: felker@uchicago.edu
Office Hours:

Listhost: http://mailman.cs.uchicago.edu/mailman/listinfo/cspp58001

NOTE: All file sharing for the course has been moved to dropbox. All students need (free) dropbox accounts to access course material. This site will still be used for communicating basic course information.

Course Description: This is a practical programming course focused on the basic theory and efficient implementation of a broad sampling of common numerical methods. Each topic will be introduced conceptually followed by detailed exercises focused on both prototyping (using matlab) and programming the key foundational algorithms efficiently on modern (serial) architectures. The ideal student in this course would have a strong interest in the use of computer modeling as predictive tool in a range of discplines -- for example risk management, optimized engineering design, safety analysis, etc. The numerical methods studied in this course underlie the modeling and simulation of a huge range of physical and social phenomena, and are being put to increasing use to an increasing extent in industrial applications. After successfully completing this course, a student should have the necessary foundation to quickly gain expertise in any application-specific area of computer modeling.

There is no formal pre-requisite for the course, though a familiarity with or strong interest in basic concepts of calculus and linear algebra will be helpful.

Course Format: Combination of instructor lecture, student presentations, and group discussion.

Grading: Weekly or bi-weekly homeworks. No exams.

Getting Help: When possible, all technical questions should be discussed over the course listhost (see link above). Otherwise, please consult TA first and then professor if further assistance is required.

Suggested texts:
Numerical Recipes in C. Free online edition here
Strang, "Linear Algebra and Its Applications"


Required Computing Resources:
Matlab: available on CS cluster; personal student version recommended
Any C/C++, fortran, or Java compiler

Lesson 1:
Part I: Properties of Linear Systems
Part II: Gaussian elimination with backsubstition: pivoting, stability, operation count, implementing in matlab, C, and Fortran.
Homework1: posted on dropbox site
Reading: Numerical Recipes Ch. 1, 2.0-2.1

Lesson 2:
Part I: Floating point representation, roundoff error, stability
Part II: Real world linear systems: introduction to first piece of model app -- 1d implicit heat equation.
Readings: Numerical Recipes Ch. 2.2-2.4

Lesson 3:
Part I: issues in implementing implicit 1-D heat equation, lu decomposition; move to 2d version
Part II: Eigenvalues/vectors: basic theory
Homework2
Readings: Numerical Recipes Ch. 9; Strang ch. 6

Lesson 4:
Part I: Eigenvector factorization: A = S Λ S-1; powers of A
Part II: Computing largest Eigenvalue/eigenvector numerically: power iteration; examples

Lesson 5:
Part I: A = Q R; Gramm Schmidt; calculating eigenvalues numerically
Part II: Norm, condition number, stability
Homework3

Lesson 6:
part I: More on QR, rotation matrices, similarity transformations

Lesson 7:
Part I: Complex eigenvalues/eigenvectors; derivation of cubic splines
Part II: Method of Steepest Descent
Readings: Very intuitive
tutorial

Lesson 8:
Part I: Conjugate gradient method
Part II: Large sparse systems derived from PDEs
A very nice introductory reference
Homework4

Lesson 9:
Part IJacobi iteration, Gauss-Seidel, and SOR
Part II Overview of Pre-conditioning (Vijay)

Lesson 10:
Discrete Fourier Transforms
Systems of ODEs
Proper Orthogonal Decomposition