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.
Aim
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.
Organization
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++20: C++20 - The Complete Guide (2021), Josuttis, N. M.
• C++17: C++ Templates - The Complete Guide, 2/E (2017), Vandevoorde, D., Josuttis, N. M. and Gregor, D.
• 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.
Examination
The examination of this course is computer-based. There are theoretical questions and practical programming assignments, but they are all done by a computer provided by the university.
There are three modules that are examined in the course: templates, STL and advanced topics. Each of these modules are examined independently of each other.
There are two ways to complete a module:
- Complete the in-course exam for that module
- Complete the section of the final exam which corresponds to the module
There are three in-course exam sessions, one per module every semester. The final exam is given four times per year (January, March/April, May/June and August).
For more information on the examination, see the examination page.
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.
Timetable
There is generally a seminar (more interactive lecture) each week during the semester.
There are several office hours scheduled where the teacher will be available to answer questions and give extra tutoring for those who want it (see here for more information).
There are teaching sessions booked, which is a student-oriented session in a classroom where the teacher is available for questions, walkthroughs and feedback.
Welcome to the course!
Page responsible: Christoffer Holm
Last updated: 2026-01-13
