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 the C++ language, its constructs and associated mechanisms as such. E.g., the course is not a systems design course or a problem solving course. See also LiTH Study Guide.


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


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, as in many other programming courses. Instead there is a number of exercises, aimed at focusing on different constructs and mechanisms in C++. 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.

Course literature, etc.

The course material is available on the course web pages. To be able to follow the course, you basically need a fairly advanced book on C++11 (the two books first below are wellknown).

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

• 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. The three previous given exams are always 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

Eric Elfving. Course leader, examiner, lecturer, tutor. Building B, plan 3, room 3D:4453, phone 28 2419, eric.elfving@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.

Some time for computer work is scheduled, without any teacher present. The experience is that most students prefer to work at home, or elsewhere where computer resources are available, and at different hours. The time scheduled will increase in Ht2/Vt2.

Course planning

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

Lectures 2-3 will cover the "C part of C++", which is basically prerequisite stuff.

The rest of the lectures (4-13) will cover classes, operator overloading, derivation/inheritance, templates, exception handling, namespaces, preprocessor and the standard library (containers, iterators, algorithms, function objects, and related utilities).

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: Eric Elfving
Last updated: 2016-11-08