Winter Semester 2024/2025
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, and elementary concepts of
parallelization.
Quick Links
Grading
- The grade is determined from your solutions to the assignments
(approximately 8 in total). Submission must be through Github
Classroom (“portfolio grade”)
- Students are required to present their solutions regularly and
without prior announcement.
- The sequence of presentations is random. If a student fails to be
present when called to show their work, they will be put into the front
position of the presentation queue and must present at the earlist
possible occasion. This must happen at most twice per semester.
- Subsequent failure to present when called, or failure to be able to
explain one’s code will lead to loss of the points for the entire
assignment.
Code Plagiarism
- The code you submit should be written by you.
- You are encouraged to talk with your peers about the problems, so
long as you write the code yourself.
- You can help others, but do not share your code in electronic
version. Copy-paste submissions do not help anybody.
- Submissions will be checked by plariarism detection software; the
ultimate determination what does and what does not constitute plagiarism
is with the instructor.
- If you take substantial help from online resources, you must credit
your source in a code comment. If your help comes from an LLM, you have
to document the prompts as well. There is no penalty for using properly
acknowledged and documented online resources, but you will be expected
to be able to explain your code and make small changes on request.
Topics
- Oct 14, 2024
-
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 15, 2024
-
Implementation questions on root finding methods, order of
convergence
- Oct 21, 2024
-
Basins of attraction, meshgrid
-plotting (see, e.g., these
notes)
- Oct 22, 2024
-
Final questions on Assignment 1; Newton’s method in multiple
dimensions, Broyden’s method (start)
- Oct 28, 2024
-
Discussion of Assignment 1 solutions
- Oct 29, 2024
-
Broyden’s method (ctd.) (see notes)
- Nov 4, 2024
-
Outer Products and implementation of the “discrete integral equation”
test problem (see notes)
- Nov 5, 2024
-
Final discussion of Assignment 2 tasks
- Nov 11, 2023
-
How to write an \(O(nd)\)
implementation of the Broyden matrix as a subclass of LinearOperator
- Nov 12, 2023
-
Discussion of Assignment 2 solutions
- Nov 18, 2023
-
The discrete boundary value test problem (see notes); why do we expect that
Broyden’s method fails on a straightforward formulation of this
problem?
- Nov 19, 2023
-
Review of the singular value decomposition; final discussion of
Assignment 3 tasks