Systems Programming in C++



  • Gain in-depth knowledge on modern C++ programming techniques and the C++ ecosystem
  • Learn to write good C++
  • Learn to implement large systems with C++
  • Learn to write high-performance code with C++


We do not expect that you have any previous programming experience with either C or C++, but you should be familiar with a general-purpose programming language of your choice. Furthermore, you should be familiar with common algorithms and data structures, as well as computer architecture and operating systems. This is roughly equivalent to having attended the following lectures.
  • Introduction to Informatics 1 (IN0001)
  • Fundamentals of Programming (IN0002)
  • Fundamentals of Algorithms and Data Structures (IN0007)
B.Sc. Informatics:
  • Introduction to Computer Architecture (IN0004)
  • Basic Principles: Operating Systems and System Software (IN0009)
B.Sc. Informatics: Games Engineering:
  • Operating Systems and Hardware oriented Programming for Games (IN0034)


  • Pre-course meeting: Wednesday, January 29th 2020, 14:30h in HS2
  • Register for the course through the matching platform
  • Lecture: Tuesdays, 12:00h-14:00h in 02.11.018
  • Tutorial: Fridays, 10:00h-12:00h in 02.11.018
  • First lecture: Tuesday, April 21 2020
  • Attendance is mandatory in both lectures and tutorials
  • The practical course will be held in English


  • Regular short written quizzes
  • Weekly programming assignments during the semester
  • Larger final project at the end of the semester
  • Assignments and final project must be solved individually (no teamwork)


  • C++ Reference Documentation
  • Lippman, 2013. C++ Primer (5th edition).
  • Stroustrup, 2013. The C++ Programming Language (4th edition).
  • Meyers, 2015. Effective Modern C++. 42 Specific Ways to Improve Your Use of C++11 and C++14.
  • Aho, Lam, Sethi & Ullman, 2007. Compilers. Principles, Techniques & Tools (2nd edition).
  • Tanenbaum, 2006. Structured Computer Organization (5th edition).

Lecture Slides and Recordings

29.01.2020 Slides of the Pre-Course Meeting
21.04.2020 Lecture 01.1: Organization & Introduction Recording
24.04.2020 Lecture 01.2: Intoduction to the C++ Ecosystem Recording
28.04.2020 Lecture 02.1: Basic C++ Syntax Recording
05.05.2020 Lecture 02.2: Compiling C++ Files & Declarations and Definitions Recording
12.05.2020 Lecture 03: References, Arrays, and Pointers Recording
19.05.2020 Lecture 04.1: Classes Recording
22.05.2020 Lecture 04.2: Concurrency in Modern Hardware & Parallel Programming Recording
26.05.2020 Lecture 05: Dynamic Memory Management & Ownership Recording
The lecture slides contain licensed material

Programming Assignments

Sheet GitLab Repository Due Date
01 30.04.2020 23:59
02 11.05.2020 23:59
03 21.05.2020 23:59
04 28.05.2020 23:59
05 04.06.2020 23:59