Winter Semester 2023/2024

Summary

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, elementary concepts of parallelization.

Grading

  • The grade is determined from your solutions to the weekly assignments. Submission must be through Github Classroom as described below (“portfolio grade”)
  • Students are required to present their solutions regularly and without prior announcement. Failure to do so satisfactorily may result in revocation of grades.

Topics

Oct 16, 2023

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)

Oct 17, 2023

No class due to admin meeting

Oct 23, 2023

Convergence rates for root finding methods

Oct 24, 2023

Implementation questions root finding methods

Oct 30, 2023

Discussion of Assignment 1; Basins of attraction, meshgrid-plotting (see, e.g., these notes)

Oct 31, 2023

Newton’s method in several dimensions (see notes)

Nov 6, 2023

Broyden’s method, rank-1 updates

Nov 7, 2023

Open lab

Nov 13, 2023

Class interface for \(O(d)\) rank-1 updates

Nov 14, 2023

Class interface ctd.

Nov 20, 2023

Discussion of Assignment 2

Nov 21, 2023

No class