Hide menu

TDDD38 Advanced Programming in C++

Examination

If you are a returning student from before 2026, please see this page for an overview of your examination.

If you wish to join the new structure of the course, please contact the teacher for guidance on how to do so.

General structure

The examination of this course consists of three modules (templates, STL and advanced topics), each of which can be examined in two ways: through the continuous assessment (DAK1, DAK2, DAK3) and/or through the final exam (DAT3).

Once a module is passed (either through DAK or DAT) it is registered in Ladok meaning you don't have to write it again. Informally speaking, once a module is passed it is passed forever, regardless which examination it was passed through (DAK or DAT).

This means that you have certain freedoms in how you are examined during the course. Broadly speaking you have two options: either you try to complete the course as it progresses by writing the continuous assessments or you write the final exam. You can also opt for a combination of both, meaning you can choose to skip certain continuous examination opportunities and instead write corresponding module during the exam.

If you do not pass a continuous examination opportunity, then you have the opportunity to pass corresponding module during the final exam instead.

The grading of each module is equivalent, meaning that for each module the number of points and the type of questions/assignments are the same for both the continuous assessment and the final exam. However, the number of assignments and the distribution of points across those assignments may vary between examination opportunities per module.

Continuous assessment

There are three voluntary examination opportunities (called Test in TimeEdit) throughout the course called DAK1, DAK2 and DAK3. These are two hour exams, each of which covers one of the three modules of the course.

Each module is worth a different amount of points, but each continuous assessment opportunity have the same amount of time. This is possible since points do not relate to time needed, but rather importance towards reaching the goals of the course.

To see how many points each module is worth, see table further down.

Exam

There is a five hour final exam planned for the course (DAT3) which consists of three parts: one part for each module of the course. These modules are solved independently during the exam time. You can skip all modules you have already completed however you are permitted to write them again if you want to increase your point total for that module.

Grade

The final grade you receive for the course is based on the total number of points earned throughout each module. If you wish to increase your grade you can choose to write a module you have previously passed during the exam. The points you get during a module is always determined by the examination where you got the highest point total.

The total number of points available for the course is 25 points. The grade is determined by the following thresholds:

  • 0-10p: U/FX
  • 11-14p: 3/C
  • 15-18p: 4/B
  • 19-25p: 5/A

Each module is worth a certain amount of points (summarized in table below) and in order to pass a module a specific point threshold must be met.

Module Total points Point threshold
Templates (DAK1)10p4p
STL (DAK2)8p3p
Advanced topics (DAK3)7p3p

Note: To pass the course you need to earn at least one point in addition to the minimum thresholds of each module.

Instructions for the computer exams

Please, sign up for an exam only if you really have the intention to participate. The number of places is limited, and our experience is that noticeable more students register for this exam than actually turns up.

If you have registered, but for any reason decide to not participate, please, withdraw your registration as soon as possible.

The environment will include GNU GCC g++ (9.3.0 and 10.3.0), LLVM clang (10.0.0 and 11.0.0), emacs, gedit, vim, visual code, atom, cppreference.com Reference, and valgrind. Three aliases for compiling with g++ are available:

   g++17:  g++ -std=c++17
   w++17:  g++ -std=c++17 -pedantic -Wall -Wextra

   e++17:  g++ -std=c++17 -pedantic -Wall -Wextra -Werror
(warnings become errors)
   g++20:  g++-10 -std=c++20
   w++20:  g++-10 -std=c++20 -pedantic -Wall -Wextra
(Strongly recommended!)
   e++20:  g++-10 -std=c++20 -pedantic -Wall -Wextra -Werror
(warnings become errors)

Please note that the warning flag -Weffc++ is recommended as well.

Assistance during exam

You will be able to contact the teacher using a simple chat client during the exam.

Means of assistance

•  You may bring an An English-* vocabulary. No other literature or any other kind of means of assistance of your own may be used.

•  cpppreference.com Reference will be available, get acquainted! (the language part will not be avaliable)


Page responsible: Christoffer Holm
Last updated: 2026-02-24