A Course in Computer Game Programming

Pat Kerr
2 min readJul 7, 2022

Since 2013, I have been occasionally teaching a practical course in Computer Game Programming which I created for the University of Iceland. It has been very well received by hundreds of students, who have produced dozens of decent little games by the end of it, including modern versions of R-Type, Contra, Galaxians, Tetris etc., and I have decided to make the videos from the 2021 edition of the course publicly available.

I wanted the course to be self-contained, so I required no textbooks, and I also wanted it to focus on the “nuts and bolts” of how games actually work, so I used no 3rd party engines either. It is all done “from scratch”.

On the other hand, I didn’t want to spend weeks teaching the finer details of 3D graphics (which are taught in a separate course, but which I could not guarantee the students had all taken), so I mostly focused on 2D stuff instead.

Also, in the interests of simplicity and practicality, I decided to work in the context of web-based games, using JavaScript and HTML Canvas — which, as alarming as that may sound to my fellow C++ GameDev professionals, actually turned out very well.

The course begins with a bit of an historical overview of computing in general, and games in particular. I always find it notable how many Computer Science students haven’t even heard of Charles Babbage (although many are aware of Ada Lovelace nowadays), which I think is a shocking lapse in the education system, and not one limited to Iceland I’m sure.

After the intro week, I proceed to teach a quick overview of JavaScript (assuming the students have prior knowledge of the basics of Java or C++) before getting into the meat of things. I have considered whether I could provide supplementary intro material for students with zero prior programming knowledge, but I think that would be a bit of a challenge, unfortunately.

Thereafter, the course proceeds week-by-week to explore major topics such as The Mainloop, 2D Canvas Rendering, Simulation, How to make “PONG!”, Sprites, Dynamics, How to make “Breakout”, Object Management, Sprite Animation, Collision, Artificial Intelligence (not just for games!), and (briefly) Networking.

You can find the full playlist via the link below. I’m quite proud of it.

(Did I ever mention that I wrote the physics system for the original Grand Theft Auto? Some day, I might even add a bonus lecture explaining how I did that too!)

https://bit.ly/GameProg2021

Babbage And Lovelace: Where it all began! (sort of)

--

--