Universiteit Utrecht - Information and Computing Sciences

academic year 2016/17 – 4th period

title image title image title image



Lectures (Topics, Slides)


Exam & Grading

Course Overview



Literature & Links


Recent news


July 17:

July 3:

June 30:

  • Detailed math solutions to the final exam: click here.
  • Full overview of current INFOGR results, including T2: click here.

June 29:

older posts will be moved 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 English.

The official schedule for this course is available on Osiris. Official course information via And here is a list of participants.

Lecture back to navigation


Teaching Assistants:


  • Kevin van Mastrigt
  • Sander Vanheste
  • Zino Onomiwo
  • Hugo Hogenbirk
  • Niek Mulleners

Practicals tutorial/consultation hours

  • Math tutorials are offered after the lectures on Tuesdays.
  • Working colleges take place after the lectures on Thursdays.
  • Room allocation is complex; see schedule.

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.

Lecture Slides & Recommended Readingsback to navigation

Below is a list of all lectures with a very brief summary of the topics, slides downloads, and recommended readings to prepare for the lecture.

Lecture 01
Tue Apr 25 - Intro

Topics: Introduction and Graphics Fundamentals. Course structure, organization, formalities. Introduction to the field of computer graphics. Rasters, Colors & Geometry. The raster display. Color representations.

Suggested readings:

Textbook Chapter 3.2 and 3.3.


lecture1 - introduction, rasters, colors

Lecture 02
Tue May 2 - Math

Topics: Vectors and coordinate systems. Implicit and parametric geometry representation.

Suggested readings:

Textbook Chapter 2.1, 2.4 (these sections cover more material than the topics listed above; the first halves of the respective chapters are most relevant) and 2.5.


lecture 2 notes

Lecture 03
  Thu May 4 - Theory

Topics: Ray Tracing. Scene representation, camera, primary rays, intersections. Textures: procedural, look-up, tiling, clamping, filtering.

Suggested readings:

Textbook Chapter 4.1 - 4.4. Chapter 11.2.


Lecture 3 - ray tracing

Lecture 04
Tue May 9 - Math

Topics: Vectors, co-ordinate systems, primitives and projections in 2D continued, and vectors, coordinate systems primitives and projections in 3D.

Suggested readings:

Textbook Chapter 2.1, 2.4 and 2.5.


lecture 4 notes

Lecture 05
Thu May 11 - Theory

Topics: Ray Tracing (2). Normals and normal interpolation, reflections, recursion and Whitted-style ray tracing, the ray tree, shading models. 

Suggested readings:

Textbook Chapter 4.8 and 13.1.


lecture5 - ray tracing (2)

Lecture 06
Tue May 16 - Math

Topic:Coordinate systems in 3D. Cylindrical and spherical coordinate system, projections in 3D. Light transport: reflection, Fresnel.

Suggested readings:

Textbook Chapter 4.8 and 13.1.


lecture 6 notes

Lecture 07
Thu May 18 - Theory

Topic: Accelerate. Object and spatial subdivisions for fast ray tracing. Slab test for ray/AABB intersection.

Suggested readings:

Textbook 12.3 and 12.4. Note that we deviate significantly from the book on these topics.


lecture7 - accelerate

Midterm Exam
Tue, May 23

Midterm Exam: Tue May 23, 08:30-10:30 in EDUC-GAMMA.

What to study: Slides for lectures 1-7, suggested readings for these lectures, tutorials 1, 2 and 3. You may also want to take a look at the 2016 midterm exam. And maybe you even find the 2015 midterm exam useful. Note that this year's tutorials are a better indication of what to expect in terms of math questions!

For this exam, you are not allowed to bring notes.

Lecture 08
Tue May 31 - Theory

Topic: OpenGL.

Suggested readings:

Textbook Chapter 8.1, 17.1..7.


lecture 8 - OpenGL

Lecture 09
Thu June 02 - Math

Topic: Matrices.

Suggested readings:

Textbook Chapter 5 and 6.


lecture 9 - matrices
audio recording

Lecture 10
Tue June 06 - Theory

Topic: Shading.

Suggested readings:

Textbook chapter 10.1, 10.2, 17.8..13.


lecture10 - shaders

Lecture 11
Thu June 08 - Math

Topic: Matrices and Transformations.

Suggested readings:

Textbook Chapter 7.


lecture 11 - matrices (2)

Lecture 12
Tue June 13 - Theory

Topic: Visibility. Depth sorting. Fine grained and large-scale visibility determination. Level of detail.

Suggested readings:

Textbook Chapter 8.4, 12.4.


lecture 12 - visibility

Lecture 13
Thu June 15 - Math

Topic: Jacobians and stochastic methods. Soft shadows, diffuse reflections, Monte-Carlo, Distributed Ray Tracing.

Suggested readings:

Textbook Chapter 13.4, 14 (as a whole), 24.1, 24.2.


lecture 13 - advanced topics (v2)

Lecture 14
Tue June 20 - Theory

Topic: Postprocessing.


lecture14 - post-processing

Lecture 15
Thu June 22

Topic: Grand Recap. Ask your final questions for the exam!

Suggested readings:

All slides.

Slides (theory part):

lecture15 - grand recap
lecture15 - math notes

Final Exam
Thu, June 30

Final Exam: Thu June 29, 13:30-16:30, in OLYMPOS-HAL2.

Retake Exam
Thu, July 13

Retake Exam: Thu July 13, 13:30-16:30, in EDUC-BETA.

Course Schedule back to navigation

Period 4 Schedule

Week Date Lecture / Exams Tutorials Practical #1 Practical #2 Practical #3
17 Tue Apr 25
Lecture 1:
Introduction & Fundamentals

Assignment P1
OpenTK Introduction / Tutorial

Thu Apr 27
(Ascension Day)

18 Tue May 2
Lecture 2:
Math: Vectors & Coordinates
Tutorial in BBG-001, 161, 214

Assignment P2:

Whitted-style ray tracing

Thu May 4
Lecture 3:
Ray Tracing
Practical in BBG-103, 106, 109; KBG 228, UNNIK 101, 104
19 Tue May 9
Lecture 4:
Math: Vectors & Coords (2)
Tutorial in BBG-001, 161, 214 Deadline:
Wed May 10, 23:59h
Thu May 11
Lecture 5:
Ray Tracing (2)
Practical in BBG-103, 106, 109; KBG 228, UNNIK 101, 105

20 Tue May 16
Lecture 6:
Math: Coordinates in 3D
Tutorial in BBG-001, 161, 214    
Thu May 18
Lecture 7:
Practical in BBG-103, 106, 109; KBG 228, UNNIK 101, 105

21 Tue May 23
Midterm Exam  EDUC-GAMMA
22 Tue May 30
Lecture 8:
Practical in BBG-001, 161, 214
Tue May 30, 23:59h

Assignment P3:

Thu June 1
Lecture 9:
Math: Transformations
Tutorial in BBG-103, 106, 109; KBG 228, UNNIK 101, 105  
23 Tue June 6
Lecture 10:
Practical in BBG-001, 161, 214
Thu June 8
Lecture 11:
Math: Matrices (2)
Tutorial in BBG-103, 106, 109; KBG 228, UNNIK 101, 105    
24 Tue June 13
Lecture 12:

Thu June 15
Lecture 13:
Math: Stochastic Methods
Tutorial in BBG-103, 106, 109; KBG 228, UNNIK 101, 105
Tue June 20
Lecture 14:
Practical in BBG-001, 161, 214

Thu June 22
Lecture 15:
Grand Recap

26 Thu June 29
Final Exam Deadline:
Tue, June 27, 23:59h

Thu July 13
Retake Exam


Tutorials back to navigation


During the course we will hand out tutorial sheets.

  • 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 attending the 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

Remaining sheets will be made available during the course.

Practicals back to navigation


There will be three practical assignments, covering traditional rasterization algorithms, shaders and ray tracing. The first assignment will be online on Tuesday, April 25. We recommend that you start working on it right away.

Practicals tutorial/consultation hours

On Tuesdays, teaching assistants will be present in various rooms to help you if you have questions. These practical tutorials are offered after the lectures on Tuesdays. Please see the schedule for a list of available rooms for each week.


  • Additional rooms are typically available. In these rooms, no TA is present, but the room is reserved for this course, so you may use it if you need the hardware / software.
  • We might adapt the consultation hours (extend before deadlines, shorten elsewhere).

Important Rules

Because of the large group of students taking this lecture, we need strict rules to keep everything manageable. The most important rules are listed below. Further explanations might be given during the lecture.

  • Grading: You have to hand in all practical assignments. Your grade from the practicals has to be at least 5.0 to pass this course (cf. exams & grading).
  • Working in teams: The programming assignments must be done in groups of 2 or 3 students. If you submit alone without prior consultation with the course instructor, the grade of your submission will be reduced by 1.0.
    • Building groups: You can choose your partner(s) yourself among your fellow students. If you ca not find one on your own, contact one of the TAs during the practical consultation hours. They will help you to team up with other students.
    • If your partner drops the course: contact the instructor immediately. You will either be assigned a new partner or be allowed to work alone without penalty. Working alone without prior consultation reduces your grade.
    • 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.
  • Students doing the course a second time: For this year's course, the practicals have been redesigned. As a consequence, you cannot reuse last year's results.

Soft- / Hardware and Infrastructure:

  • Required equipment: For the practicals, you need a Windows PC with Visual Studio. The free Community Edition of Visual Studio 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.
  • All necessary hard- and software is installed on the computers in the reserved rooms.
  • "Groep indeling" and TA-support: Ignore the "groep indeling" on OSIRIS. There are no groups other than the teams you form with your fellow students, and there are no fixed time slots where you have to be present.


Assignment P1: OpenTK Tutorial
Assignment P2: Ray Tracing
Assignment P3: Advanced shaders

(1) Graphics Programming Tutorial

The first assignment is basically a tutorial that teaches you how to set up the framework that we will be using (VisualStudio, C#, OpenTK), and introduce you to some of the basics of graphics programming.


(2) Whitted-style Ray Tracing

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


(3) Real-time

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


Assignment P1

The first assignment is a tutorial introducing basic 2D graphics, coordinate systems, and OpenTK. OpenTK allows us to create OpenGL applications in C#. Details for the assignment are in the document which you can download below.



  • Wednesday, May 10, 23:59h
  • Late submission: May 11, 12:00 (noon) (with 0.5 points deduction)
  • Very late submission: May 11, 23:59 (with 1.0 points deduction)


Assignment P2

The second assignment is all about ray tracing. Full details are in the assignment description which you can download below.



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


Assignment P3

For the third and final assignment, you will be creating a small 3D engine. See the official assignment description for details.



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


Exam & Grading back to navigation


Programming assignments: There will be three programming assignments throughout the semester. The final grading P for your programming assignments is calculated as follows: P=0.2*P1+0.4*P2+0.4*P3. 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, i.e. either T1 or T2 if and only if it improves your final grade. 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 P1, P2, or P3 if it improves your final grade. The topic for the retake assignment is decided 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.


To be released.


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, especially for programming assignment 2 and 3:

Web references:


News Archive back to navigation

Old posts

June 24:

  • Slides for the Grand Recap (theory part) now available.
  • Slides for the Grand Recap (math part) now available.

June 23:

June 20:

June 20:

  • Slides for lecture 14 on post-processing now online.

June 19:

June 15:

June 13:

  • Slides for lecture 12 ("Visibility") now available.
  • Updated tutorial 4 solutions.
  • Notes for lecture 13 ("Advanced topics") can be previewed.
  • Grading sheet for assignment P2, now updated to v2 based on your comments.

June 12:

June 9:

June 7:

  • Grades for the ray tracing assignment: click here.
  • Midterm grades, including math retake: click here.

June 6:

June 5:

  • Recordings of math lectures can from now on be downloaded; check the first one here. Use solis credentials to access them.

June 1:

May 30:

  • Slides for lecture 8 ("OpenGL") now ready for download.
  • Notes for lecture 9 ("Matrices") also available.
  • Fresh tutorial 4 document has been added.

May 29:

  • Assignment P3 ("Rasterization") details now available.
  • A fresh template for P3 can now be downloaded.

May 25:

  • Tentative grades for the midterm exam.
  • Check your e-mail for details on the math retake. Didn't receive a mail? Let me know.

May 23:

May 22:

  • P1 grades, version 2. Please check carefully.

May 20:

May 19:

May 18:

May 17:

May 16:

May 11:

  • Slides for lecture 5 on ray tracing are now available.

May 9:

May 4:

May 2:

May 1:

Tutorial 1 can now be downloaded. Discuss these during the tutorial sessions and on Slack.

April 26:

  • Slides for lecture 1 are now available for download.

April 21:

March 27:

  • Initial version of the 2016/2017 page.