Computer Graphics and Game Development Courses

We offer a number of courses for a student wishing to specialize in the computer graphics or game development field during their studies. The courses and activities are grouped into 3 categories. The Basics category courses focus on the introduction and fundamental understanding in the field. The Advancement category is meant to improve on the learned basics and deals with topics, which build on the fundamentals. Studies culminate with the BSc or MSc thesis, during which the student achieves and demonstrates mastery of a chosen topic in the field.

Computer Graphics – MTAT.03.015

In the Computer Graphics course we acquire a really good fundamental understanding of 3D graphics in computer science. In the first part of the course we go through the standard graphics pipeline. We start with the topics on how we define and transform geometrical objects in an affine space. We deal with vectors and matrices, which are the reason the GPU can render so many polygons in our computer at all. The topics continue with optical properties of materials and how are 3D objects colored (shaded) when given a light source. Naturally after those main topics we have gained also the fundamental skills in both vertex and fragment shader programming.
The second half of the course focuses on a variety of advanced topics and branches into 2 modules. On one hand you can continue developing low level algorithms like ray-triangle intersection testing used in ray trace rendering or path tracing used in global illumination. On the other hand it is possible to learn how computer graphics techniques are utilized in the Unreal Engine 4 game engine and gain skills on how to effectively use the engine. More enthusiastic students can spend time to master both those approaches.

Computer Graphics Seminar (CGS) – MTAT.03.305

Being a Master’s seminar type course the topics in CGS change from year to year. Each time you take this course you pick your own topic from among any computer graphics topic. The chosen topic should be the one, which interests you and you can likely use in your future projects or thesis. During the semester we present to each other our chosen topics and thus collectively advance in the field. Usual topics include procedural generation, different rendering aspects (non-photorealistic, physically-based, real-time, offline etc), visual effects, use case studies and other topics, which were not covered in the fundamental computer graphics course. Often there are also guest lecturers and field trips to different labs.

Computer Graphics Project (CGP) – MTAT.03.328

This very practical repeatable course allows you to building a software project of your choosing. With the learning-by-doing approach you gain skills in a chosen technology. Although the project is your own choice and should be related to your level of prior skills, it is recommended that you have an understanding of computer graphics or game development. Otherwise it might be difficult for you to estimate the planned effort to put into your project. Usually this course is good, when you are building something by yourself anyway or have a practical thesis part, which requires more work than the thesis credits you for. During CGP you additionally learn to set up milestones and correctly estimate your time requirements based on your skills.

Computer Game Development and Design – MTAT.03.263

As computer games are a very interdisciplinary art form, this course focuses on a myriad of topics from different disciplines. For example in the beginning of game development it is important to define and know your player types and the target audience. During the latter half of the production phase it is important to know how to market your game to the aimed audience. Of course, because this is a computer science course, many of the topics focus on how to design and implement different aspects of a game. From narrative and sound to graphics and level design. During the course you build your own games with the Unity game engine. This is why it is important to have a good understanding of object-oriented programming before taking this course. In the end you will have gained practical skills to utilize in your future game development projects.

Evolution of Video Games – LTAT.02.019 / LTAT.TK.017

To design a good video game, one has to know what makes video games good. In this course you learn the evolution story of video games, from the time video games first became a thing to modern virtual reality and beyond. You learn to see video games in the evolutionary scope. This will allow you to discuss the different design, development and business choices made in the video game industry. With that insight you can also make better choices on your own game designs and projects. This course is fully online, so you get to learn together with like-minded people regardless of your physical location and without the need to leave your home. The course materials are made in collaboration with the LVLup! Video Game Museum.

Game Engines – LTAT.02.018

Often creating a big project like your thesis requires you to use a game engine. Learning one can take a lot of time and takes you away from actually working on the said project. So in this course you learn 3 very popular game engines: Unity, Unreal Engine and Godot. After this course you have skills in each of those to build your projects. You also acquire understanding about what makes each of those engines unique and how to choose the best engine for your project. Learning in this course is hands-on by building practical applications in each engine.

Programming Patterns in Computer Games – MTAT.03.315

Developing a real-time application with a graphical component can be quite difficult if you have little experience with it. In this course, we advance on the object-oriented programming paradigm by learning a good number of programming patterns. These patterns are common, useful, readable, and scalable solutions to often quite standard problems in programming. So in this course, we learn how not to make a mess in the code, when developing a game. In the end, this course provides very useful programming skills and also critical thinking capabilities into your own and other people’s code.

Virtual Reality – TBA

After having learned to design and develop regular video games or use game engines for regular projects, you can take your experience design skills to the next level with virtual reality (VR). In this spring course, you learn mostly about how to design good quality virtual reality solutions. You get answers to questions such as: What makes designing for VR so different and difficult? What VR design principles are commonly followed for aspects like interaction, locomotion, immersion, presence, visuals, art, audio? What are the modern technologies that even enable VR and how to make them work for you?


In the end of your level of studies, you have to do a thesis. There are different types of a thesis and we have lot of guidelines for actually doing it. The main goal is for you to find something interesting (previously unknown) and useful (beneficial to others) to use your previously acquired skills in. Doing a successful thesis shows to you and to others that you have become an independent computer scientist in a field of your choosing.

The Computer Graphics and Virtual Reality Lab

The CGVR LabThis support structure provides you a workplace with a number of devices you might need during your studies. For example if you would like to have a good PC with dual monitors to speed up your computer graphics project or thesis work. In the lab we also have other students and professionals working beside you, so you can quickly find help to different issues you encounter.


CGLearnThe Computer Graphics, Computer Game Development and Design, Programming Patterns in Computer Games have their materials in the learning environment CGLearn. All the materials and tasks are freely available for students at, for others there is a limited selection at
The materials of each course in the environment are structured into modules, which include topics. Each topic has then chapters on different aspects of the topic. In some materials there are also live JavaScript examples, which illustrate an algorithm and allow you to play around with parameters.
The environment was built as part of a MSc thesis and has been improved ever since.

Game Jams

We organize game jams three times a year. In April and October we have learning-oriented game jams Game Jam and Mängujämm dedicated for high school and beginner-level university students. In these jams we have instructors to help out and teach all the participants in the different fields related to game development. These jams coincide with the global Ludum Dare game jam such that participants also submit their games there.

In January we have a highly competitive game jam organized for advanced level university students and other game developers from the field. The Pro Game Jam has great prizes for the best participating teams and it is a great chance to show your skills to industry representatives in the jam. This jam coincides with and is organized as a site for the Global Game Jam.