General information

The course Game Programming in C++ is given as a part of the GMT Master programme at the Utrecht University. The course is given in the 3rd period on Monday afternoon from 1pm-5pm and on Thursday morning from 9am-1pm (timeslot C). The first two hours are lecture (see schedule below). The second two hours are scheduled for practical assignments.

The following book will be used for the course: C++ for Game Programmers: Second Edition by Michael J. Dickheiser. Charles River Media, 2007. ISBN 1-58450-452-8

The final exam grades are now available here.

Course overview

The goal of the course Game Programming in C++ is twofold. First, a practical introduction to programming in C++ will be given. We will also present a set of useful techniques for efficient and reusable C++ programming, including design patterns. Next, we will discuss how C++ is used to implement techniques often used in games. We will look at a collection of advanced programming techniques, such as inheritance, exception handling, STL, and plugins. Also, we will provide an analysis of the structure of game engines by looking at their architecture, as well as the design patterns that are applied. Next to the lectures, a number of practical assignments will be given, each of which addressing a particular topic covered in the lectures.

Curriculum

A printable version of the curriculum can be downloaded here.

Date Topic Notes Chapters Assignments Where
Mon 8-2 Introduction, C++ basics Notes 1     BBL065
Thu 11-2 Pointers and arrays Notes 2     BBL065
Mon 15-2 OO programming (basic) Notes 3     BBL065
Thu 18-2 OO programming (advanced) Notes 4 1, 2   BBL065
Mon 22-2 The art of programming Notes 5 3, 6, 7 Deadline assignment 2 BBL065
Thu 25-2 Design patterns Notes 6 8   BBL065
Mon 1-3 Game engines Notes 7 14   BBL065
Thu 4-3 STL (basic) Notes 8 9   BBL065
Mon 8-3 STL (advanced) Notes 9 10, 11 Deadline assignment 3 BBL065
Thu 11-3 Threads Notes 10     BBL065
Mon 22-3 Exceptions Notes 11 5   BBL065
Thu 25-3 Templates Notes 12 4 Deadline assignment 4 BBL065
Mon 29-3 Abstract interfaces and plugins Notes 13 12, 13   BBL065
Thu 1-4 Object management Notes 14 16, 17   BBL065
Thu 8-4 Game development Notes 15 18, 19   BBL065
Mon 12-4 Final lecture Notes 16     BBL065
Thu 15-4       Deadline assignment 5  
Tue 20-4 Final exam       EDUC/Gamma
Exercises

During the lectures, a numer of exercises will be done. You can download a PDF file containing all the exercises here.

Practical Assignments

A number of practical assignments need to be done in order to finish this course:
Assignment Deadline Additional files
Assignment 1 Not required to send  
Assignment 2 February 22, 2010 floorplan.dat
Assignment 3 March 8, 2010  
Assignment 4 March 25, 2010 Notes (updated March 25)
Assignment 5 April 15, 2010, retake deadline: April 25, 2010  

Contact

For any additional information about the course and the lectures, please contact Arjan Egges. For any question about the practical assignments, please contact Ben van Basten.