
Taught next: Winter 2019/2020
Objectives
This introductory course stands at the base of the vast Computer Graphics world, whose outcome we see in medical applications, industrial modeling, entertainment and many other fields.
Topics include:
 Basic rendering techniques
 Introduction to OpenGL
 Color theory
 Shadowing
 Simple animation techniques
 Selected advanced topics
Objectives
The course focuses on advanced topics in computer graphics and specifically photorealistic rendering.
Topics include:
 Basics of sampling theory and applications to image manipulation
 Ray tracing
 Radiosity
 Photon mapping
 Selected advanced topics in volumetric graphics
Taught next: Spring 2018, Spring 2019
Objectives
Recent advances in 3D digital geometry processing have created a plenitude of novel concepts for the mathematical representation and interactive manipulation of geometric models.
This course covers some of the latest developments in geometric representations, modeling and processing.
Topics include:
 Surface modeling based on triangle meshes
 Mesh generation
 Mesh fairing and simplification
 Parameterization and remeshing
 Subdivision schemes
 Mesh editing and deformation
Programming exercises will help translate theoretical concepts to practical applications.
A code framework will be provided that allows to experiment with various algorithms without having to bother about software infrastructure.
There will be a few modest programming assignments, and no final exam.
Prerequisites
Introduction to Computer Graphics, experience with C++ programming.
Some background in geometry or computational geometry is helpful, but not necessary.
  
Taught next: Winter 2018/2019
Objectives
In this seminar you will be introduced to the analysis and design of vector fields on discrete surfaces, by reading and discussing recent research papers on the topic.
The first few meetings will be dedicated to some basic background about vector calculus, and vector calculus on surfaces.
Topics include:
 Vector field representations
 Smooth vector field design
 Vector field visualization
 Vector field simplification
 Applications: texture synthesis
 Applications: curvature estimation
 Applications: quad meshing
 Applications: fluid simulation
Grading:
 Each student will present a research paper in the seminar.
 The presentation is 5070 minutes, and should include enough details to understand the paper, and where it stands in the context of other papers. You will need to read the paper carefully, implement a simplified version of it (e.g. one of the algorithms suggested), and discuss its pros and cons. Grading will be based on your ability to analyze the paper, and discuss the research results.
 Final grade: 60% presentation, 40% partial implementation of the paper.
 Attendance is mandatory.
Prerequisites
Some background in geometry is helpful, but not necessary.
Taught by: Orestis Vantzos
Objectives
A practical course on the various methods, challenges and applications of modelling the motion of physical objects and the evolution of physical processes in the computer, with a focus on the kinds of phenomena one encounters in graphics and animation. We will work through a number of interesting examples; from their mathematical modelling, to the discretisation and numerical solution of the resulting model, all the way to the visualisation and study of the results.
Potential topics, with examples, include:
 Particle systems: flame simulation, formation of snowflakes
 RigidBody Motion: Quadcopter simulation, Realistic spaceship flight
 (Inverse) Kinematics: Deformable & tearable cloth, Ragdoll physics
 Elliptic PDEs: Buckling of bars and shells, Radiosity, Fluid/gas flow through a maze
 Parabolic PDEs: Heating things up, Tiger stripes and giraffe spots formation
 Hyperbolic PDEs: All kinds of waves!
Most of the algorithms we will use can be found in Numerical Recipes: The Art of Scientific Computing by W. H. Press et al., Cambridge Uni Press.
Prerequisites:
Being comfortable with Linear Algebra (vector spaces, matrices, linear systems), Analytic Geometry (coordinate systems, equations of lines, circles) and Calculus (derivatives and integrals, preferably in many dimensions). A familiarity with linear systems and differential equations would be useful, but is not required. We will work with a relatively small subset of Python, so a basic knowledge of the language would be useful. A working knowledge of Matlab or Mathematica is not required but might be helpful with the exercises.
Some related courses are: Intro to Computer Graphics, Numerical Analysis, Visualisation and Animation (EE).
Grading:
A number of exercises/mini projects will be suggested based on each topic, typically asking for the numerical simulation of a phenomenon via a given algorithm and the visualisation of the result.
The final grade will be a combination of:
 Solving a certain number of the exercises.
 Presenting in the class an animation video based on one of the exercises.
The language of instruction is English. 
