Hide menu

TDDD38 Advanced Programming in C++

Course information

This course is a supplementary course on programming in C++. It is not required that you have taken a basic course in C++, but it does presume that you have good programming knowledge and good programming skills in at least one procedural or object-oriented language, such as Ada, C, Java or C++, and knowledge of basic concepts of object-oriented programming (class, derivation/inheritance, polymorphism).

It is obvious that "advanced" may be interpreted quite differently by different persons, depending on background and expectations. The main focus for this course is on advanced concepts of programming through the C++ language. E.g., the course is not a systems design course or a problem solving course. The course is given in C++, but most concepts that we cover are possible to translate into other languages. See also LiTH Study Guide.


The aim of the course is to give more in-depth knowledge and skills in programming using C++, with focus on language constructs and mechanisms which can be regarded as advanced. Also parts of the standard library is covered.


The course is supposed to be a mainly self-learning course, with limited teacher resources. A series of seminars is given.

There are no obligatory programming assignments and no lab sessions. Instead there is a number of exercises associated with each seminar (with a few exceptions) aimed at focusing on different constructs and mechanisms of C++ covered during that seminar. Some exercises are quite alike, and you are to choose yourself which to work with, to get a varied content. It is very important to solve exercises!

Self-learning is the main activity in this course. You decide yourself when, where, and how you prefer to work with the course. Tuition mainly via email and office hours.

Course literature, etc.

There are no references to any book in the course itself, so strictly speaking no book is required. The course material is available on the course web pages. But it is recommended to use a book for more detailed information. You would need a fairly advanced book on at least C++11, but try to get one that covers C++17 if possible. The following books are recommended:

• C++17: C++17 - The Complete Guide (2019), Vandevoorde, D., Josuttis, N. M. and Gregor, D.

• C++17: C++ Templates - The Complete Guide, 2/E (2017), Josuttis, N. M.

• C++11: C++ Primer, 5/E (2012), Lippman, S.B., Lajoie J. and Moe B. Reading instructions.

• C++11: The C++ Programming Language, 4/E (2013), Stroustrup, B.

• The C++ Standard Library - A Tutorial and Reference, 2/E (2012), Josuttis, N. M.

• Effective Modern C++ (2014),Meyers, S.

• cppreference.com online tutorial, reference, etc. The reference (C++ Standard library reference) part is available at exam (except the Language subsection).

• Lecture slides and code examples.


The course will be examined by a computer-based examination. There will be both theoretical questions and programming assignments. A collection of previous given exams are available on the web, as examples.

There are four examination occasions each year. There is one exam directly following a course (i.e. in January and in May/June), and re-examinations in the Easter (April) and August exam periods.

More information about examination and the computer exam system is found on the course's web pages.

Course personnel

Christoffer Holm. Course leader, lecturer, tutor. Building B, floor 2, room 229:224, christoffer.holm@liu.se.

For more information about personell, se the course contact pages.


The lectures scheduled in Ht1 or Vt1, depending on which semester the course is given, will cover the C++ core langage. The lectures in the first half of Ht2/Vt2 will cover selected parts of the C++ standard library, and possibly something more.

There are several office hours scheduled each week where the teacher will be available to answer questions and give extra tutoring for those who want it (see here for more information).

Course planning

The first lectures will introduce the course and give an overview of C++.

Seminars 1-6 will cover the core language; conversions, classes, operators, derivation/inheritance, templates, exception handling, namespaces, preprocessor etc.

Seminar 7 and onwards will cover the standard library, it's implementation and various other aspects of the language. These seminars will be quite open ended and may vary from year to year.

Otherwise it is the student's responsibility to plan her/his work to be well prepared for the exam.

Welcome to the course!

Page responsible: Christoffer Holm
Last updated: 2022-08-15