Computer Science

Faculty of Engineering, LTH

Denna sida på svenska This page in English


Sign up for a Lab Time using this link :

The course has five mandatory programming assignments which we recommend doing in pairs, but they can be done individually. An overview of the assignment will be presented at a dedicated seminar, and the instructions are available in a PDF document. The assignments take more time than the 2 hour lab session each week. You should work on the lab before the lab session, and bring your questions to the lab session, and get the final assignment approved. To have your assignment approved, you are to present it during your lab time. The objective is to present your solution the week after the corresponding seminar. If working in pairs, Both students in a pair must be present, and answer questions about their work in order to pass. If you cannot present at the designated lab time, please contact the course lecturer.


Seminars are on Wednesday at 15 in M:Teknodromen (M:1201). 

30/8Introductory seminar: OpenGL and C++


6/9 Seminar 1: Solar system

Slides, Assignment 1

13/9Seminar 2: Tessellation & Interpolation

Slides, Assignment 2

20/9Seminar 3: Shaders

SlidesAssignment 3, GLSL spec (4.1)

27/9Seminar 4: Water shader

Slides, Assignment 4, GPU Gems article

4/10Seminar 5: Game

Slides, Assignment 5, Game Gallery



Lab reference implementation 


The software framework we use is available on GitHub.
For compiling on Windows we recommend using MS Visual Studio C++ community edition 2022. For compiling on MacOS we recommend using XCode.
The documentation of the framework is available here.
Instructions on how to setup the environment to successfully build and run the provided code can also be found on GitHub.
The textures and objects used in the assignment can be found here.

GLSL syntax highlighting

For Visual Studio 2017, 2019 and 2022

Using GLSL language integration: if you are on your own computer, you can retrieve it directly through Visual Studio’s extensions menu

For Vim and NeoVim

Using CaffeineViking’s vim-glsl (supporting GLSL 1.10 through 4.60, and the GLSL variant used for Vulkan shaders), or beyondmarc’s glsl.vim (supporting GLSL 3.30 through 4.60, and highlights deprecated and unsupported keywords).