We run a number of courses for students specializing in computer graphics, game development, or extended reality.
The courses and activities have different prerequisites that make learning more effective. For example, to enroll in the Game Engines course, you should be capable with object-oriented programming beforehand. Plan your studies in a way that prepares you for your thesis. For doing a computer graphics thesis, you should take and successfully pass the Computer Graphics course before. Otherwise you may find out too late that your topic area is not for you or you are not good enough in it.
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 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 – LTAT.06.019
In this spring course, you learn how to design good quality virtual reality (VR) 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? The course is designed in a way where anyone can take it, no prior skills or knowledge is necessary. You just have to be interested in VR!
Thesis
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 Study Lab
The CGVR Study Lab 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.
The lab is built for students, let our staff know if you want to use the lab!
CGLearn
The 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 cglearn.eu, for others there is a limited selection at cglearn.eu/pub/courses.
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.