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. It must therefore be stressed that the main focus is on the language, its constructs and associated mechanisms as such, less on advanced applications. 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 lecture series 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.

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

Course literature, etc.

Most of the course material will be available on the webb. To be able to follow the course, you basically need a fairly advanced book on C++11, but books on C++11 and C++11 programming is still very restricted (Aug 2013). Two classic books revised for C++11:

• 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 end Reference, 2/E (2012), Josuttis, N. M.

• Lecture slides and code examples.


The course will be examined by a computer-based examination. There will be both theoretical questions and smaller programming assignments. Earlier 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 December and 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

Tommy Olsson. Course leader, examiner, lecturer, tutor. Building B, plan 3, room 3D:449, phone 28 1954, tommy.olsson@liu.se.

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


Most lectures are scheduled in the first half of the course.

Time for computer work is scheduled in all blocks, so all participants should have some access to the computers (the Sun system). The schedule is based on allocating 4 hours per participant and week. The experience is, however, that most student prefer to work at home or elsewhere where computer resources are available for this kind of use. There has previously not arisen any need to distribute the scheduled occasions among groups, and therefore no such action has been taken. If problems arise, we will deal with them then.

Course planning

The lectures will start with two introductory lectures (2-3) on C++. They are supposed to cover the "C part of C++" and basic aspects of classes in C++.

The rest of the lectures (4-11) 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.

Welcome to the course!

Page responsible: Tommy Olsson
Last updated: 2014-02-03