Universiteit Utrecht - Information and Computing Sciences

academic year 2017/18 – 4th period

title image title image title image



Lectures (Topics, Slides)


Exam & Grading

Course Overview



Literature & Links


Recent news

July 12:

July 4:


July 3:

older posts 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 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:


  • Federico D'Ambrosio
  • Mark Dekker
  • Kylian Kuijer
  • Sander Vanheste
  • Rik van Toor
  • Ozer Ulusoy
  • Carlijn Nijhuis

Practicals tutorial/consultation hours

      • Math tutorials are offered after the math lectures (first three lectures and three lectures after the midterm exam).
      • Working colleges take place after all other lectures.
      • Room allocation for tutorials and practicals 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 24 - Intro

Topics: Introduction, and: Vectors, and vector algebra in 2D. Course structure, organization, formalities. Introduction to scalars, vectors, points and coordinate systems. Dot product, Pythagoras.

Suggested readings:

Textbook Chapter 2.


Jacco's introduction slides
Deb's math slides
Math notes

Lecture 02
Thu April 26 - Math

Topics: Primitives and projections in 2D. Implicit and parametric geometry representation: lines, circles, ellipses. Projection and perspective. Circular coordinate system. Ray intersection.

Suggested readings:

Textbook Chapter 2.


Lecture 2 (v2)
Math notes

Lecture 03
  Tue May 1 - Math

Topics: Vector algebra, primitives and projections in 3D. Plane equations, cross product, ray/sphere intersection. Spherical coordinate system.

Suggested readings:

Textbook Chapter 2.


Lecture 3
Math notes

Lecture 04
Thu May 3 - Theory

Topics: Rasters, Colors and Geometry.
Introduction to the field of computer graphics. The raster display. Color representations.

Suggested readings:

Textbook Chapter 3.2 and 3.3.


Lecture 4

Lecture 05
Tue May 8 - Theory

Topics: Ray Tracing (1). 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 5

Lecture 06
Tue May 15 - 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.


Lecture 6

Lecture 07
Thu May 17 - 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.


Lecture 7

Midterm Exam
Tue, May 22

Midterm Exam: Tue May 22, 08:30-10:30 in EDUC-BETA.

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 and 2017 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. Calculators, phones and smartwatches are also prohibited.

Please download a practice exam by clicking here. Answers are now also available. Some notes:
  • The idea is that you complete these questions in two hours.
  • Solutions to verify your results will be posted on Thursday.
  • The practice exam does not include theory questions. The real exam will include these!

Lecture 08
Tue May 29 - Math

Topic: Matrices.

Suggested readings:

Textbook Chapter 5.


Lecture 8

Lecture 09
Thu May 31 - Math

Topic: Matrices reloaded 1: transformations.

Suggested readings:

Textbook Chapter 6.


Lecture 9
Math notes

Lecture 10
Tue June 05 - Math

Topic: Matrices reloaded 2: transformations strike back.

Suggested readings:

Textbook Chapter 7.


Lecture 10 (v2)

Lecture 11
Thu June 07 - Theory

Topic: OpenGL.

Suggested readings:

Textbook Chapter 8.1, 17.1..7.


Lecture 11 (v2)

Lecture 12
Tue June 12 - Theory

Topic: Shaders. Phong, world & tangent space, normal mapping, rendering fur.


Lecture 12

Lecture 13
Thu June 14 - Theory

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

Suggested readings:

Textbook Chapter 8.4, 12.4.


Lecture 13

Lecture 14
Tue June 19 - Theory

Topic: Postprocessing.


Lecture 14

Lecture 15
Thu June 21

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

Suggested readings:

All slides.


Lecture 15

Final Exam
Thu, June 28

Final Exam: Thu June 28, 13:30-16:30, in EDUC-BETA.

Retake Exam
Thu, July 12

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

Course Schedule back to navigation

Period 4 Schedule

Week Date Lecture / Exams Tutorials Practical #1 Practical #2 Practical #3
17 Tue Apr 24
Lecture 1:
Introduction, vectors, coords
 Tutorial in MIN-2.02, BBG-1.69, DDW-1.22

Assignment P1
OpenTK Introduction / Tutorial

Thu Apr 26
Lecture 2:
Math: Vectors & coords (2)
Tutorial in BBG-1.03, 1.06, 2.01, 2.14
18 Tue May 1
Lecture 3:
Math: Vectors & prims in 3D
Tutorial in BBG-1.69, 2.01, DDW-1.22

Assignment P2:

Whitted-style ray tracing

Thu May 3
Lecture 4:
Rasters, colors
Practical in BBG-1.03, 1.06, 2.01, 2.14
19 Tue May 8
Lecture 5:
Ray tracing (1)
Practical in BBG-1.69, 2.01, DDW-1.22
Thu May 10
(Ascension Day)

20 Tue May 15
Lecture 6:
Ray tracing (2)
Practical in MIN-2.02, BBG-1.69, DDW-1.22    
Thu May 17
Lecture 7:
Practical in BBG-1.03, 1.06, 2.01, 214

21 Tue May 22
Midterm Exam  EDUC-BETA
22 Tue May 29
Lecture 8:
Math: Matrices
Tutorial in MIN-2.02, BBG-1.69, DDW-1.22
Tue May 29, 23:59h

Assignment P3:

Thu May 31
Lecture 9:
Math: Transformations
Tutorial in BBG-1.03, 1.06, 2.01, 2.14  
23 Tue June 5
Lecture 10:
Math: Transformations (2)
Tutorial in MIN-2.02, BBG-1.69, DDW-1.22  
Thu June 7
Lecture 11:
Practical in BBG-1.03, 1.06, 2.01, 2.14    
24 Tue June 12
Lecture 12:
Practical in MIN-2.02, BBG-1.69, BBG-0.83    
Thu June 14
Lecture 13:
Practical in BBG-1.03, 1.06, 2.01, 2.14
Tue June 19
Lecture 14:
Practical in MIN-2.02, DDW-1.22, BBG-0.83

Thu June 21
Lecture 15:
Grand Recap

Practical in BBG-1.03, 1.06, 2.01, 2.14

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

Thu July 12
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

Tutorial 1 - Vectors, coordinate systems and projections in 2D and solutions
Tutorial 2 - Primitives and projections in 2D and solutions
Tutorial 3 - Vectors, primitives and projections in 3D and solutions
Tutorial 4 - Matrices (1) and solutions
Tutorial 5 - Matrices Reloaded - Transformations and solutions (v3)
Tutorial 6 - Matrices Strike Back (v2) and solutions (v2)
Bonus tutorial:
the graphics pipeline and solutions

Set now complete!

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 24. We recommend that you start working on it right away. Note that unlike previous years, assignment 1 will not contribute to your grade.

Practicals tutorial/consultation hours

After each lecture, teaching assistants will be present in various rooms to help you with the mathematics and practicals. Please see the schedule for a list of available rooms for each week.

Important Rules

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

  • Working in teams: For improved grading efficiency, the programming assignments are supposed to be done in groups of 2 or 3 students. You are allowed to submit alone, but this will reduce your grade by 1 point.
    • 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.
    • 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 are the same as last year. You can therefore use your practical grade of the 2016/2017 course under the following conditions:
    1. This must be your second attempt at passing INFOGR (i.e., not third or fourth etc.).

    2. You can only keep your full practical grade, i.e. not individual assignments.

    3. You must inform the lecturer about keeping the practical grade before May 10.

  • Other rules for returning customers:
    • You can not reuse your theory grade.

    • If you redo the practicals, you can only improve (i.e., (partially) reuse) last year's code if the team composition did not change. If you hand in work that was partially produced by someone else, this will be considered plagiarism, even if you feel you did all the work last year. This will be reported.

  • Plagiarism:
    • We use an automated plagiarism system that checks for similarities with code handed in this year, as well as several years back, and code from the internet. 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 you may be penalized as well.

  • 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 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.

(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.

Will be announced before the course starts.

(2) Whitted-style Ray Tracing

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

Will be announced during the course.

(3) Real-time

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

Will be announced during the course.

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 can be found in this document.



  • You do not have to hand in assignment 1, this is a tutorial.


Assignment P2

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



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


Assignment P3

For the third and final assignment, you will be creating a small 3D engine. Full details are in the assignment description.



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


Exam & Grading back to navigation


Programming assignments: There will be three programming assignments throughout the course. The final grading P for your programming assignments is calculated as follows: P=0.5*P2+0.5*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 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.


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

July 2:

June 30:

June 29:

  • Grades for the final exam can be downloaded here.
  • Exam review: Tuesday July 3. Slots:
  • 37*** - 56*** 14:30;
  • 57*** - 59***: 15:00;
  • 60*** - 61***: 15:30;
  • 61*** - 6587038: 16:00.

June 28:

  • Exam day!
  • Exam pdf can be obtained here. Solutions and grades will follow tomorrow.

June 25:

  • Practice exam solutions updated (matrix on last page).

June 22:

  • Practice exam solutions now available: click here.

June 21:

June 19:

June 18:

June 14:

  • Today's lecture slides on visibility now online.

June 12:

June 11:

  • Solutions for Tutorial 5 now available.
  • Bonus tutorial exercises on the pipeline now available.

June 7:

June 6:

  • Results for the ray tracing assignment are in, click here to view.

June 5:

May 31:

May 30:

May 29:

May 25:

May 18:

  • Slides for lecture 2 patched (see Slack).
  • Tutorial 2 solutions patched (see Slack).

May 17:

May 16:

May 15:

May 14:

May 12:

May 8:

May 3:

May 1:

April 26:

April 24:

April 23:

April 12:

  • Some changes to the schedule.
  • Assignment 1 no longer contributes to your grade.

April 5:

  • Initial version of the 2017/2018 website.