Universiteit Utrecht - Information and Computing Sciences

academic year 2019/20 – 4th period

title image title image title image



Lectures (and topics)

Exam & Grading


Course Overview


Tutorials & Practica

Literature & Links


Recent news

May 14:

  • On Teams now: instructions on how the procedure for the MIDTERM EXAM on May 19.

April 21:

  • Thursday lectures moved from 10AM to 3PM.
  • Midterm exam scheduled for Tuesday May 19, 10AM.

April 20:

  • Final preparations.
  • Check your GROUP using your student number.
  • Join us for the kick-off gathering on Tuesday, 10AM! Location: Teams, general channel.
  • Find a partner (if possible: in the same group) for the assignments.

Older posts are still available here.

Course Overview back to navigation

bunny logo image

Course: "Graphics" is an introductory course about computer graphics. Computer graphics deals with the algorithmic processing of visual (images) and spatial (geometry) data. The course will focus on the very basics of modeling and rendering, i.e., the mathematical description of three-dimensional scenes and how to create (realistic) images of such models.

Rendering Algorithms: We have several options to convert the mathematical representation of a virtual world into a digital image. Modern games typically rely on the z-buffer algorithm. An alternative approach is ray tracing. In this course we will explore both methods. Ray tracing allows us to produce 'correct' images; rasterization lets us approximate this in real-time.

Math: An important aspect of computer graphics is the use of mathematics. This course provides a short coverage of the mathematical basics needed for rendering. We will introduce fundamental concepts of linear algebra and other areas of higher mathematics that are important far beyond the field of graphics.

The language for this course will be Dutch, materials will be in English.

The official schedule for this course is available on Osiris. Official course information via

Lecture back to navigation


Teaching Assistants:


GROUP A:    (student numbers 0000000 - 6270000)

  • Mark Dekker (AiO)
  • Joep Bakker

GROUP B:    (student numbers 6270001 - 6705000)

  • Ron Vanderfeesten
  • Erwin Glazenburg

GROUP C:    (student numbers 6705001 - 6896000)

  • Marien Matser
  • Hugo Peters

GROUP D:    (student numbers 6896000 - 9999999)

  • Lorenzo Theunissen
  • Jip Wijnia

Determine your group to find out who your TAs are. These TAs will be answering your questions during the online tutorials. You can contact your TAs directly on Teams.

Due to the unfortunate situation, this course will be provided online using Microsoft Teams. Recorded lectures will be made available in batches: one batch before the midterm exam, one after the midterm exam. There will be weekly online sessions where you can ask questions about the lectures, the programming tutorial and the programming assignments:
  • Tuesdays, 10:00 - 12:00, in the INFOGR2020 team
  • Thursdays, 15:00 - 17:00, in the INFOGR2020 team

Topics back to navigation

Mathematics (50%)

Linear algebra

  • Points & vectors
  • Matrices & linear maps
  • Affine transformations
  • Linear systems & determinants

Projective geometry

  • Homogeneous coordinates
  • Projection matrices

Geometric modeling

  • Primitives (triangles, spheres, etc.)
  • Curves and surfaces
  • Differential properties / normals
Core Graphics (40%)


  • Ray visibility queries
  • Data structures
  • Recursive ray tracing (shadows, reflections, transparency)


  • Camera models / perspective projection
  • Visibility algorithms
  • Rasterization pipeline

Special effects

  • Basic materials
  • Shadows
  • Shaders
Advanced Graphics (10%)

Global Illumination

  • Basic ideas of physically-accurate rendering

Acceleration Structures

  • BVH

(These subjects will be touched upon only briefly.)

The list is intended to give a rough orientation; topics might still be subject to change, and additional aspects might be covered.

Course Schedule back to navigation

Period 4 Schedule

Week Date Event
Suggested focus
Tutorial Practical #1 Practical #2
17 Tue Apr 21
10:00 - 12:00
Online Q&A  
TAs, Michael

OpenTK Introduction

Thu Apr 23
15:00 - 17:00
Online Q&A
TAs, Jacco
18 Tue Apr 28
10:00 - 12:00
Online Q&A
TAs, Michael

Assignment P1:

Ray tracing

Thu Apr 30
15:00 - 17:00
Online Q&A
TAs, Jacco
19 Tue May 5
(no need to hand in!)

Thu May 7
15:00 - 17:00
Online Q&A
TAs, Michael, Jacco
Mathematics / Programming

20 Tue May 12
10:00 - 12:00
Online Q&A
TAs, Michael
Thu May 14
15:00 - 17:00

Online Q&A
TAs, Jacco

21 TUE MAY 19
10:00 - 12:00             


22 Tue May 26
10:00 - 12:00
Online Q&A
TAs, Michael
Thu May 28, 23:59h

Assignment P2:

Thu May 28
15:00 - 17:00
Online Q&A
TAs, Jacco
23 Tue June 2
10:00 - 12:00
Online Q&A
TAs, Michael
Thu June 4
15:00 - 17:00
Online Q&A
TAs, Jacco
24 Tue June 9
10:00 - 12:00
Online Q&A
TAs, Michael
Thu June 11
15:00 - 17:00
Online Q&A
TAs, Jacco
Tue June 16
10:00 - 12:00
Online Q&A
TAs, Michael

Thu June 18

26 Thu June 25
Final Exam
P2 Deadline:
Tue, June 23, 23:59h

Thu July 9
Retake Exam                                                       .


Tutorials back to navigation


During the course we will make tutorial sheets available.

  • The tutorials cover the mathematical aspects of the course.
  • There will be several problem sheets throughout the semester. It is expected that you work on these at home and during the tutorial sessions. Please take this seriously! You will need the practice.
  • The tutorials are a very good preparation for the midterm and final exam.
    Reading the textbook and absorbing lectures is a good idea, but you can only be sure that you understood the material if you succeed in solving these problems. The problems in the tutorials will be very much like what you can expect in the written tests.

Assignment Sheets / Downloads

Will be made available later.

Practicals back to navigation


There will be two practical assignments, covering traditional rasterization algorithms, shaders and ray tracing. A tutorial that prepares you for these assignments will be online on Tuesday, April 21. We recommend that you start working on it right away.

Important Rules

Because of the large group of students taking this lecture, we need strict rules to keep everything manageable.

  • Working in teams: The two programming assignments are designed for groups of two students. You may however also work on the assignments alone. Details:
    • Working alone: This year there is no penalty for working alone on the assignments. It is however not allowed to work in a team of three or more students.
    • Building groups: You can choose your partner(s) yourself among your fellow students. If you can not find one on your own, contact one of the TAs during the online assistance sessions. They will help you to team up with other students.
    • If your partner drops the course: This is a risk of working in pairs. You may continue working with the materials that you produced together. You can however not continue working on these materials with a new partner.
    • Project team responsibility: it is up to you how you split the work among your team members. However, this freedom comes at the price that you have to be prepared for situations such as team members dropping the course or not delivering what they promised to you. It is your responsibility to make sure that you are aware of your team's progress, so you can react to such issues in an appropriate way.
  • Plagiarism:
    • We use an automated plagiarism system. Plagiarism will always be reported and may have severe consequences.

    • Do not store your projects on github or share code in any other way. If your code is used by another team (e.g. in the future) you may be penalized as well. Sharing ideas is fine, of course.

  • Exceptions to the rules:
    • All exceptions require involvement of the study counselor.

Soft- / Hardware and Infrastructure:

  • Required equipment: For the practicals, you need a Windows PC with Visual Studio. The free Community Edition of Visual Studio 2019 is a good platform for C# development. We will be using OpenTK to access OpenGL from C#. This is also free software.
  • Alternative platforms: For this course, support will be mostly limited to Microsoft Windows and C#. You may of course use alternative platforms and programming languages, but an appropriate level of autonomy is expected in that case.
  • "Groep indeling" and TA-support: Feel free to ignore this. We do.

(0) Graphics Programming Introduction

Before you start working on the assignments we expect you to complete the provided tutorial, which teaches you how to set up the framework that we will be using (VisualStudio, C#, OpenTK) and introduces you to some of the basics of graphics programming.

(1) Whitted-style Ray Tracing

In the first assignment you will create a basic recursive ray tracer, featuring shadows, reflections and refraction.

Will be announced during the course.

(2) Real-time

In the second assignment you will create a basic 3D engine using hardware rasterization via OpenGL.

Will be announced during the course.

Tutorial Assignment

Please find files and documents for the tutorial on the Teams page.


Assignment P1

Please find files and documents for the first assignment on the Teams page.

  • Thursday, May 28, 23:59h
  • Late submission: May 29, 12:00 (noon) (with 0.5 points deduction)
  • Very late submission: May 29, 23:59 (with 1.0 points deduction)


Assignment P2

For the second assignment, you will be creating a small 2.5D engine. Please find files and documents for this assignment on the Teams page.

  • Tuesday, June 23, 23:59h
  • Late submission: June 24, 12:00 (noon) (with 0.5 points deduction)
  • Very late submission: June 24, 23:59 (with 1.0 points deduction)


Exam & Grading back to navigation


Programming assignments: There will be two programming assignments throughout the course. The final grading P for your programming assignments is the average of the two grades for the assignments: P = (P1+P2)/2. P must be at least 5.0 (before rounding) to pass the course.

Exams: There will be a midterm exam T1 and a final exam T2. The final grading T for your exams is calculated as follows: T = 0.3*T1 + 0.7*T2. T must be at least 5.0 (before rounding) to pass the course.

Final grade: If both T (= the grade for the written exams) and P (= the programming grade) are at least 5.0, the final grade for the course is (T + P) / 2. Your final grade must be at least 6 (after rounding) to pass the course.


If you did not pass the course but your final grade for the course is at least 4.0 (before rounding), you are entitled to participate in a retake. This can either be a retake assignment or a retake exam.

Retake (exam) T3: This exam will cover all lectures and tutorials. The result from your retake exam T3 will replace the lower one of your original scores, will replace one exam grade in such a way that the positive impact on your final grade is maximal. I.e.: either T1 or T2 if and only if it improves your final grade. In most cases this will be T2, since this exam has a higher weight. Criteria for passing stay the same as indicated above (i.e. P and T must be at least 5.0 before rounding, and your final grade must be at least 6 after rounding). 

Retake (practicals): There will be one retake assignment that can replace either P2 or P3 if it improves your final grade. The topic for the retake assignment is decided on individually. To get your assignment and related deadlines, contact the instructor.

Exceptions: Exceptions to these rules in principle always require involvement of the study coach.


Literature & Links back to navigation


  • The textbook of this course is Fundamentals of Computer Graphics by Peter Shirley et al. The course is designed based on the 4th edition of the book. Since the basics (which we are covering) did not change that much, older editions might work, too (no promises).
  • Here is the web page of the text book.

Additional resources for the practicals:

Resources that might be helpful:

Other resources will be added during the course.

Web references:


News Archive back to navigation

Old posts

April 2:

  • Preparing website for online course.

March 2:

  • Initial version of the 2019/2020 website.