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.
References, Arrays, Pointers [lec04.pdf] (tweedback)
Exercise: TBD
11.11./
12.11.
Classes and Conversions [lec05.pdf] (tweedback)
Exercise: TBD
18.11./
19.11.
Memory Management and Copy/Move [lec06.pdf] (tweedback)
Exercise: TBD
25.11./
26.11.
Templates [lec07.pdf] (tweedback)
Exercise: TBD
02.12./
03.12.
C++ Standard Library I: Containers and Iterators [lec08.pdf] (tweedback)
Exercise: TBD
09.12./
10.12.
C++ Standard Library II: Algorithms and Functions [lec09.pdf] (tweedback)
Exercise: TBD
16.12./
17.12.
Memory Management II [lec10.pdf] (tweedback)
Exercise: TBD
23.12./
07.01.
Compile-Time Programming [lec11.pdf] (tweedback)
Exercise: TBD
13.01./
14.01.
Inheritance
Exercise: TBD
20.01./
21.01.
I/O and Testing
Exercise: TBD
27.01./
28.01.
Parallelism
Exercise: TBD
03.02./
04.02.
Larger Projects and "The Real World"
Exercise: TBD