Concepts of C++ Programming

Contents

First, the module studies the basic concepts of the C++ language (syntax, strong typing, type deduction, focus on runtime efficiency). Then, the module studies the central, modern C++ programming concepts. The goal is that participants get a solid and thorough understanding of important and modern C++ concepts.

Organization

  • Lecture with integrated exercises:
    • Lecture with integrated exercises: Mon 14:30–17:00 (s.t.) in MW 0001 (live streamed/recorded)
    • Exercise: Tue 14–16 (c.t.) in Interims II HS 2
  • Exercises will include hands-on programming tasks
  • Weekly homework assignments for grade bonus (0.3), submission using Git
  • Language: English
  • Module: CIT323000 (formerly IN2377). 6 ECTS, Bachelor/Master elective in various study programs
  • Computer-based exam under supervision (90 minutes) with programming exercises, open book, own laptop required.
  • Zulip stream for lecture
  • Zulip stream for the homework assignments

Prerequisites

The course is aimed at bachelor/master students who have taken the following (or similar) courses:

  • IN0001 Introduction to Informatics + IN0002 Fundamentals of Programming
  • IN0007 Fundamentals of Algorithms and Data Structures

Prior experience in C++ or C is not required. Experience with imperative and object-oriented programming languages like Java is necessary.

Material

Material and exercises will be regularly provided throughout the semester.

Script (updated weekly with new lecture content, includes content of slides and additional information and comments): [book.pdf]

Introduction on how to use the exercise system: [introduction.md]

Note: The schedule below is preliminary and is likely to change during the semester.

DateTopics
15.10. Overview, Motivation, Hello World [lec01.pdf] (tweedback)
Exercise: (no exercise session, lecture is on Tuesday)
21.10./
22.10.
Basic Syntax, Object Model [lec02.pdf] (tweedback)
Exercise: TBD
28.10./
29.10.
Declarations/Definitions, Preprocessor, Linker [lec03.pdf] (tweedback)
Exercise: TBD
04.11./
05.11.
Pointers, References, Arrays
Exercise: TBD
11.11./
12.11.
Conversions and Classes
Exercise: TBD
18.11./
19.11.
Copy and Move Semantics
Exercise: TBD
25.11./
26.11.
Memory Management and Exceptions
Exercise: TBD
02.12./
03.12.
Templates
Exercise: TBD
09.12./
10.12.
C++ Standard Library I (Containers, Utilities)
Exercise: TBD
16.12./
17.12.
Lambdas and C++ Standard Library II (Algorithms, Functions)
Exercise: TBD
23.12./
07.01.
Compile-Time Programming and C++ Standardization
Exercise: TBD
13.01./
14.01.
Inheritance
Exercise: TBD
20.01./
21.01.
Multi-Threading
Exercise: TBD
27.01./
28.01.
Larger Projects and "The Real World"
Exercise: TBD
03.02./
04.02.
TBD
Exercise: TBD