CS-328: Numerical Methods for Visual Computing and Machine Learning (Fall 2021)
1-2pm (Exercise, SG0211)
Instructor
Teaching Assistant
Teaching Assistant
Teaching Assistant
General information
Summary: Visual computing and machine learning are characterized by their reliance on numerical algorithms to process large amounts of information such as images, shapes, and 3D volumes. This course will familiarize students with a range of essential numerical tools to solve practical problems in this area.
Contents: This course provides a first introduction to the field of numerical analysis with a strong focus on visual computing and machine learning applications. Using examples from computer graphics, deep neural networks, geometry processing, computer vision, and computational photography, students will gain hands-on experience with a range of essential numerical algorithms.
The course will begin with a review of floating point arithmetic and error propagation in numerical computations. Following this, we will study and experiment with several techniques that solve systems of linear and non-linear equations and perform dimensionality reduction. Since many interesting problems cannot be solved exactly, numerical optimization techniques constitute the second major topic of this course. We will take an extensive look at automatic differentiation, the mechanism underlying popular deep learning frameworks such as PyTorch and Tensorflow. The course concludes with a review of numerical methods that introduce randomness to solve problems that would otherwise be intractable.
Students will have the opportunity to gain practical experience with the discussed methods using programming assignments based on Scientific Python.
Adaptations (COVID-19): this year, we had to make several adaptations to how this material is taught:
- Lecture: the lecture is given via pre-recorded video file, and students with a valid covid certificate will be able to attend the in-person lecture during the regular lecture slot.
- Exercises: students with a valid certificate may come in person during the exercise hour (SG0211). Some assistants will also be available on Zoom during that time. Outside of this time slot, students can ask questions on Moodle or Slack.
Prerequisites: MATH-101 (Analysis I) and MATH-111 (Linear Algebra).
Students are expected to have good familiarity with at least one programming language (e.g. C/C++, Java, Scala, Python, R, Ruby...). The course itself will rely on Python, but this is straightforward to learn while taking the course. During the first weeks of the semester, there will be tutorial sessions on using Python and Scientific Python.
Although it is not a strict prerequisite, this course is highly recommended for students who wish to pursue studies in the area of Visual Computing, in particular: CS-341 (Introduction to computer graphics), CS-440 (Advanced computer graphics), CS-442 (Computer vision), CS-413 (Computational Photography), CS-444 (Virtual Reality), and CS-445 (Digital 3D geometry processing)
Learning outcomes: At the end of the course, students should be able to:
-
Write computer programs that use numerical linear algebra and analysis techniques to transform and visualize data
-
Reason about ways of structuring numerical computations efficiently.
-
Analyze the numerical stability of programs built on floating point arithmetic
-
Recognize numerical problems in visual computing applications and cast them into a form that can be solved or optimized.
Teaching methods: Lectures, interactive demos, theory and programming exercises
Expected student activities: Students are expected to study the provided reading material and actively participate in class and in exercise sessions. They will be given both theoretical exercises and a set of hands-on programming assignments.
Assessment methods:
- Continuous assessment during the semester via project assignments (35%)
- Final exam (65%)
Resources: Slides and other resource will be provided at the end of each class. The course textbook is Numerical Algorithms: Methods for Computer Vision, Machine Learning, and Graphics by Justin Solomon (freely available here)
The following optional references are optional but highly recommended: Scientific Computing: An Introductory Survey (2nd edition) by Michael Heath and What Every Computer Scientist Should Know About Floating-Point Arithmetic by David Goldberg.
Late policy: Late homework submissions are reduced by -25% per late day (where “late” is defined by Moodle, which has a strict cut-off). Please abide by the deadlines posted on Moodle, double-check your submission, and do not postpone to the last moment to avoid accidents. Please let us know ahead of time if you can't submit in time due to medical reasons – in all other cases, the deadlines are strict.
Academic Integrity: Assignments must be solved and submitted individually. Do not copy (or even look at) parts of any of the homeworks from anyone else including the web. Do not make any parts of your homework available to anyone, and ensure that your files are not accessible to others. The university policies on academic integrity will be applied rigorously.
Schedule
Date | Lecturer | Contents |
---|---|---|
23.09.2021 | Wenzel Jakob |
Lecture: Administrative details, overview of course topics, introduction to Floating Point arithmetic & error analysis. |
23.09.2021 | Krzysztof Lis |
Exercise: Introduction to Python.
|
30.09.2021 | Wenzel Jakob |
Lecture: Linear Systems I: LU factorization |
30.09.2021 | Baptiste Nicolet |
Exercise: Introduction to NumPy. HW1 released |
07.10.2021 | Wenzel Jakob |
Lecture: Linear Systems II: Conditioning, Least Squares
|
07.10.2021 | Martin Nicolas Everaert |
Exercise: Introduction to Matplotlib, Homework Q&A.
|
14.10.2021 | Wenzel Jakob |
Lecture: Linear Systems III: Regularization, QR factorization |
14.10.2021 | Krzysztof Lis |
Homework Q&A HW1 due, HW2 released |
21.10.2021 | Wenzel Jakob |
Lecture: Efficient Numerical Code |
21.10.2021 | Baptiste Nicolet |
Homework Q&A |
28.10.2021 | Wenzel Jakob |
Lecture: Eigendecomposition and Singular Value Decomposition (SVD) |
28.10.2021 | Martin Nicolas Everaert |
Homework Q&A HW2 due, HW3 released |
04.11.2021 | Wenzel Jakob |
Lecture: Nonlinear problems |
04.11.2021 | Krzysztof Lis |
Homework Q&A |
11.11.2021 | Wenzel Jakob |
Lecture: Optimization, Autodiff |
11.11.2021 | Baptiste Nicolet |
Homework Q&A
|
18.11.2021 | Wenzel Jakob |
Lecture: Neural Networks |
18.11.2021 | Martin Nicolas Everaert |
Homework Q&A HW3 due, HW4 released |
25.11.2021 | Wenzel Jakob |
Lecture: Interpolation |
25.11.2021 | Krzysztof Lis |
Homework Q&A |
02.12.2021 | Wenzel Jakob |
Lecture: Integration |
02.12.2021 | Baptiste Nicolet |
Homework Q&A HW4 due, HW5 released |
09.12.2021 | Wenzel Jakob |
Lecture: Monte Carlo Integration |
09.12.2021 | Martin Nicolas Everaert |
Homework Q&A |
16.12.2021 | Wenzel Jakob |
Lecture: Graphics and Inverse Graphics |
16.12.2021 | Krzysztof Lis |
Homework Q&A |
23.12.2021 | Baptiste Nicolet |
Homework Q&A HW5 due |