This class is an advanced course in Python programming for Data Science.
Topics include concepts of software engineering (modularization, design patterns, documentation, unit tests, version control), advanced features of the Python language (including Numpy, Scipy, Sympy, Matplotlib), performance aspects of programming (Cython/Numba, sparse matrix operations), 3D Graphics, and elementary concepts of parallelization.
Introduction, root finding methods: Newton’s method, secand method, bisection for functions of a single variable (this set of lecture notes summarizes what was covered in class; for more information, see the Wikipedia articles on Newton’s method, the secant method, and the bisection method; the theory is covered in any basic textbook on numerical analysis)
Implementation questions on root finding methods, order of convergence
Basins of attraction, meshgrid
-plotting (see, e.g., these
notes)
Final questions on Assignment 1; Newton’s method in multiple dimensions, Broyden’s method (start)
Discussion of Assignment 1 solutions
Broyden’s method (ctd.) (see notes)
Outer Products and implementation of the “discrete integral equation” test problem (see notes)
Final discussion of Assignment 2 tasks
How to write an \(O(nd)\)
implementation of the Broyden matrix as a subclass of LinearOperator
Discussion of Assignment 2 solutions
The discrete boundary value test problem (see notes); why do we expect that Broyden’s method fails on a straightforward formulation of this problem?
Review of the singular value decomposition; final discussion of Assignment 3 tasks
Discussion of Assignment 3 solutions
Limited memory Broyden methods
Final comments on Assignment 4
Discussion of Assignment 4 solutions
Principal component analysis - theory (see lecture notes by C. Bretherton: part 1, part 2 part 3)
Exploration of the PSSTA dataset
No class due to d-fine presentation at the MIDS
Discussion of Assignment 5 solutions; comments on Assignment 6
Last questions regarding Assignment 6, linear inverse problems (see, e.g., Section 6 in these notes)
Discussion of Assignment 6 solutions; Morozov principle
Implementation of the basic 5-point averaging operator as a sparse CSR matrix