BKO Portfolio Jacco Bikker

Universiteit Utrecht - Information and Computing Sciences


NHTV Courses

CTU Prague Course

UU Courses

NHTV Courses

GTF1 - Graphics technology fundamentals

First-year introductory course for programmers and visual artists. This course introduces students to graphics technology and terminology and provides an overview of the evolution of graphics for games - from basic 2D graphics with sprites and tiles on early systems to advanced shaders on modern GPUs.

Assessment: exam (multiple choice). This course was taught from 2007 to 2011, and in 2014.

PR3 - Optimization

First-year course, following PR1 and PR2 which introduce the student to C/C++ programming. In PR3, the focus is on creating efficient programs using a structured approach to software optimization. Part of this approach is a thorough understanding of the underlying hardware. The course is assessed using three practical optimization assignments, covering the theory of the course.

Assessment: weekly optimization assignments plus a final assignment which combines all covered theory, plus a report detailing the optimization process. Additional materials: several compact C++ programs to optimize: cloth, shooter, RTS, gravity.
This course was taught from 2007 to 2014.


Second year course in the IGAD bachelor program. The graphics courses (GP1-GP4) start with an introduction to rendering using ray tracing.

Assessment: single final assignment (a Whitted style ray tracer) plus report. Additional materials: C++ template.
This course was taught from 2008 to 2014.


Following the course on ray tracing, GP2 introduces students to rasterization. This is first done using software rasterization, before the GPU is used in GP3 and GP4.

Assessment: single final assignment (a software rasterizer and a small game demonstrating its capabilities), and a report.
This course was taught from 2008 to 2014.


Course in the third year of the IGAD bachelor on the topic of general purpose computing on graphics hardware using OpenCL.

Assessment: GPGPU project of choice, report. Additional materials: C++ OpenCL template for rapid GPGPU prototyping.
This course was taught in 2014.

HA2 - multiplayer technology

Course in the third year of the IGAD bachelor on multiplayer / network technology.

Assessment: basic multiplayer game or application using the client / server model and a lobby, including (at least) basic motion prediction and dead reckoning. This course was taught in 2010 and 2011.

PA - Procedural ART

Course in the new Master Game Technology. In this course, we explore automatic content generations for games and movies. Courses in the MGT program start with a brief exploration of a field, followed by a sample research problem in the field.
  • Lecture 1: Introduction, Perlin noise, L-systems
  • Lecture 2: Procedural landscapes - survey
  • Lecture 3: Example problem: voxels
  • Lecture 4: Student presentations
  • Lecture 5: Case study: voxel research
  • Lecture 6: Student progress presentations

Assessment: research proposal on a related topic, presentation of the research proposal, proof of concept implementation with presentation. This course was taught in 2014.


Course in the new Master Game Technology, focusing on physically based rendering.
  • Lecture 1: Introduction, light transport, a brief history
  • Lecture 2: Algorithms based on ray tracing
  • Lecture 3: Student presentations
  • Lecture 4: Materials
  • Lecture 5: Variance reduction techniques
  • Lecture 6: Bidirectional techniques

Assessment: research proposal on a related topic, presentation of the research proposal, proof of concept implementation with presentation. This course was taught in 2014.

CTU Prague Course

Ray tracing for games

Course developed for the Czech Technical University. This course was taught over a period of only two weeks, with one lecture and one lab session each day. The final day was used for presentations of the practical assignments and a written exam. Students received credits for partaking in the course, so this was an official part of the curriculum that year.

Course page can be found on the CTU website.
Additional materials:

  • Software rasterizer, to jump start game development process
  • Rotoscope example demonstrating cache behavior
  • Gravity example demonstrating vectorization


  • Watt A. 3D Computer Graphics. Addison-Wesley , 1999
  • Jesse Schell. The Art of Game Design: A book of lenses. CRC Press, 2008
  • Žára a kol. Moderní počítačová grafika, Computer Press, 2005
  • Matt Pharr, Greg Humphreys. Physically Based Rendering, From Theory To Implementation. Morgan Kaufmann; 2 edition (2010)
  • Various papers suggested during the lectures.

This course was taught in 2015.

Utrecht University Courses


Course in year 1 of the bachelor, introducing students to modelling and computer graphics. Part of this course is a short coverage of linear algebra. Mathematical aspects of rendering are discussed in detail. This course is based on materials by Michael Wand and Wolfgang Hürst. Lecture slides have been recreated.

Assessment: this course is assessed using two written exams and three practical assignments.
Literature: Fundamentals of Computer Graphics by Shirley et al., several papers and online resources suggested during the lectures.
Additional materials developed / adapted for this course:

This course was taught in 2015. Evaluation (from Caracal, retrieved March 22, 2016).

INFOMOV - Optimization & vectorization

Master course. This course was added to the curriculum in 2015 and offers practical insight in performance tuning, using algorithmic, low level and machine specific optimizations. Vectorization on CPU and GPU is also introduced as an effective way to exploit compute potential.

Assessment: this course was assessed using three practical assignments. Two of these cover the presented theory; the third assignment is a project of choice, in which students optimize an existing open source or research application.


  • Agner Fog, Optimizing Software in C++ (link)
  • Designing for Performance, Scalability & Reliability: StarCraft II's Approach (link)
  • Joshua Waring, Cache in a Multi-Core Environment (link)
  • Michael Karbo, Inside the CPU (Chapter 30 from PC Architecture) (link)
  • Paul Hsieh, Programming Optimization (link)
  • What Every Programmer Should Know About Memory (link)
  • and others (see website).

Additional materials:

This course was taught in 2015. Evaluation (from Caracal, retrieved March 22, 2016).

INFOB3CC - Concurrency

Course in year 2 of the bachelor, with Gerard Tel (lectures 2, 4, ... ). The odd lectures have been rebuilt to match updated literature and developments in the industry. Topics covered include instruction level parallelism, streaming execution and concurrency in modern game engines. This course was taught in Dutch.

Assessment: two written exams and three practical assignments, the third one based on a supplied CPU application, focusing on GPGPU.
Literature: Structured Parallel Programming: Patterns for Efficient Computation van Michael McCool, Arch D. Robinson & James Reinders, Morgan Kaufmann, 2012.
This course was taught in 2015/2016. Evaluation (from Caracal, retrieved March 22, 2016).


Master course, redeveloped for the 2015/2016 academic year. Focus is on interactive physically based rendering; topics include acceleration structure construction and traversal, physically based light transport, stochastic rendering methods and GPU ray tracing.

Assessment: written exam and three practical assignments, of which two are graded.

  • Physically Based Rendering, Second Edition - From Theory to Implementation, Pharr & Humphreys. Morgan Kaufmann, 2010. ISBN-10: 0123750792
  • T. Whitted. An Improved Illumination Model for Shaded Display. Commun. ACM, 23(6):343–349, 1980
  • Fast, Minimum Storage Ray/Triangle Intersection, Möller & Trumbore, 1997
  • A. S. Glassner. Space Subdivision for Fast Ray Tracing. IEEE Computer Graphics and Applications, 4:15–22, 1984
  • And other materials, see website.

Additional materials:

This course was taught in 2016. Evaluation (from Caracal, retrieved June 27, 2016).



Co-developed in 2005/2006 for the NHTV University of Applied Sciences. IGAD is a vocational bachelor aiming to educate prospective game developers for the AAA game development industry (PC/console). A strong focus is on state-of-the-art practical skills. To this end, a teaching team was assembled from the international game industry.



Graduation showreels:


Co-developed in 2013/2014 for the NHTV University of Applied Sciences. Rather than being an extension to the IGAD bachelor program, this vocational master is designed to teach 'applied science'. To this end, students learn how to explore a broad topic within a field, to formulate a research question, and to solve the problem at hand using structured detail research. This program was accreditated in 2014.