Ausgewählte Algorithmen in der Computergraphik

Starting from a seminar in 2008, I have been teaching Selected Algorithms in Computer Graphics as a lecture (in English or German) since winter 2009.

I teach the lecture and the exercises (2+2 hours). In 2011/12, the exercises were awarded Held der Lehre, and the lecture was awarded third place in 2017/18.

The aim of this course is to provide an understanding of fundamental building blocks” that appear in many solutions to problems in Computer Graphics and in particular in Digital Geometry Processing. Most of them rely on mathematical concepts and numerical algorithms. The course does not only review theory but focuses on practical and efficient implementations: We want to make you able to understand and efficiently implement research papers.

A note on the history of this course: I had picked a working title, and I always kept it. A better title may be Introduction to Scientific Programming with Applications to Computer Graphics

This course complements the lectures Foundations of Computer Graphics, CAGD and Mesh Processing. Prior attendance at any of these is not required.

Overview

We will look at techniques for efficient programming in C++ and Matlab. However, we will not detail on the implementation of most of the numerical algorithms. Instead, we use established libraries like BLAS and LAPACK or just use Julia or Matlab. (I have a strong preference for Julia over Matlab or Python/NumPy.)

The exercises include using a Gitlab instance for collaboration (e.g., define tasks, comment on commits, track issues). We will also use Gitlab’s CI framework for automated tests and benchmarks including coverage analysis by Gcov. And we will learn about several more programming/software development tools.

Contents

The following is only a rough table of contents, which does not include practical programming. We review selected examples from research papers.

  • Review of basic Linear Algebra
  • Linear Least-squares problems
  • Sparse linear systems
  • Examples for non-linear optimization
  • Regularization & modeling constraints
  • Floating point numbers
  • Applications of QR and SVD decompositions
  • Eigenvalue problems

… and examples!

Organization

extent (week) 2h lecture + 2h exercises
credit points 6
course language English or German,
course materials in English
prerequisites experience in Julia or Matlab and/or C++ programming,
experience with Git,
Linear Algebra basics,
Computer Graphics or CAGD lecture recommended
recommended semester >4
official times & dates please search LSF (no permalink available)

The exercises include (mandatory) homework programming assignments in C++ and Julia or Matlab / GNU Octave. We use Git for development and homework submission. The active use of a Gitlab web front-end is mandatory.

I would love to use the Julia programming language in favor of Matlab! So far I have refrained from doing so, because Matlab is already being taught and used in other courses. – We will discuss and reevaluate this choice at the beginning of the course.

Literature

We will discuss various problems from selected research papers, and provide many pointers to additional reading. Our main tool will be Linear Algebra, see, e.g., the following book

Gilbert Strang.
Introduction to Linear Algebra.
5th edition, Wellesley-Cambride Press2016