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.

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

DateTopics
15.10. Overview, Motivation, Hello World
Exercise: (no exercise session, lecture is on Tuesday)
21.10./
22.10.
Basic Syntax, Object Model
Exercise: TBD
28.10./
29.10.
Declarations/Definitions, Preprocessor, Linker
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