htw saar Piktogramm
Back to Main Page Choose Module Version:


Programming 4

Module name (EN):
Name of module in study programme. It should be precise and clear.
Programming 4
Degree programme:
Study Programme with validity of corresponding study regulations containing this module.
Applied Informatics, Bachelor, ASPO 01.10.2017
Module code: PIB-PRG4
The exam administration creates a SAP-Submodule-No for every exam type in every module. The SAP-Submodule-No is equal for the same module in different study programs.
Hours per semester week / Teaching method:
The count of hours per week is a combination of lecture (V for German Vorlesung), exercise (U for Übung), practice (P) oder project (PA). For example a course of the form 2V+2U has 2 hours of lecture and 2 hours of exercise per week.
3V+1P (4 hours per week)
ECTS credits:
European Credit Transfer System. Points for successful completion of a course. Each ECTS point represents a workload of 30 hours.
Semester: 4
Mandatory course: no
Language of instruction:
Written exam

[updated 24.02.2018]
Applicability / Curricular relevance:
All study programs (with year of the version of study regulations) containing the course.

PIBWI50 (P221-0123) Applied Informatics, Bachelor, ASPO 01.10.2011 , semester 5, optional course, informatics specific
PIB-PRG4 (P221-0123) Applied Informatics, Bachelor, ASPO 01.10.2017 , semester 4, optional course, informatics specific
Workload of student for successfully completing the course. Each ECTS credit represents 30 working hours. These are the combined effort of face-to-face time, post-processing the subject of the lecture, exercises and preparation for the exam.

The total workload is distributed on the semester (01.04.-30.09. during the summer term, 01.10.-31.03. during the winter term).
60 class hours (= 45 clock hours) over a 15-week period.
The total student study time is 150 hours (equivalent to 5 ECTS credits).
There are therefore 105 hours available for class preparation and follow-up work and exam preparation.
Recommended prerequisites (modules):
Recommended as prerequisite for:
Module coordinator:
Prof. Dr.-Ing. Matthias Jung
Prof. Dr.-Ing. Matthias Jung

[updated 16.02.2023]
Learning outcomes:
After successfully completing this module, students will:
_ be proficient in the basic language concepts (data types, expressions, control structures, functions, exception handling) of C++.
_ be proficient in the special C++ concepts of object orientation (classes, objects, inheritance, polymorphism) and be able to implement them in programming terms.
_ be capable of using function and class templates in programs.
_ be able handle basic classes and algorithms of the C++ standard library (e. g. strings, input/output, container classes, generic algorithms) confidently.
_ be able to develop solutions to difficult problems in small teams and implement them in a well-structured manner.

[updated 24.02.2018]
Module content:
The course will introduce students to structured, object-oriented and generic programming with C/C++. C/C++ language elements will be introduced and their use practiced in exercises on the basis of the knowledge imparted in the Programming 1-3 modules. The use of the C/C++ standard library will be emphasized.
1. Introduction
    - History
    - Use
    - Development of C/C++ programs
    - A comparison of C++ and Java
2. The basics
    2.1 The basics and data types
    2.2 Arithmetic
    2.3 Type transformations
    2.4 Control structures
3. Functions and structures
    3.1 Functions and references
    3.2 Structures
    3.3 Preprocessor directives
4. Data types
    4.1 Enums and arrays
    4.2 C strings
    4.3 The string class
    4.4 Pointers
5. In/Output
    5.1 In/Output
    5.2 Input/Output formatting
    5.3 File handling
6. Classes
    6.1 Structure of classes
    6.2 Using Doxygen
    6.3 Copy constructor and assignment operator
    6.4 Class attributes and _methods
    6.5 Friends
7. Overloading operators
    7.1 Overloadable operators
    7.2 A rational number class
    7.3 Various applications
    7.4 Smart pointer
8. Inheritance
    8.1 Introduction
    8.2 Virtual functions
    8.3 Copy constructor and assignment operator
    8.4 Abstract classes
    8.5 Multi inheritance
    8.6 The dynamic_cast operator
9. Exception handling
10. Templates
    10.1 Function templates
    10.2 Class templates
11. Standard template library
    11.1 Introduction
    11.2 Sequence containers
    11.3 Iterators and algorithms
    11.4 Associative containers
12. Runtime Type Information (RTTI)

[updated 24.02.2018]
Teaching methods/Media:
Transparencies, projector, lecture-specific homepage

[updated 24.02.2018]
Recommended or required reading:
Breymann, Ulrich: Der C++ Programmierer. C++ lernen - Professionell anwenden - Lösungen nutzen., Hanser-Verlag
Stroustrup, Bjarne: Einführung in die Programmierung mit C++, Pearson Studium
Eckel, Bruce: Thinking in C++; Second Edition; Prentice Hall:
Grimm, Rainer: C++11: Der Leitfaden für Programmierer zum neuen Standard Addison-Wesley
Will, Torsten T.: C++11 programmieren: 60 Techniken für guten C++11-Code  Galileo Computing;
Meyers, Scott: Effektiv C++ programmieren: 55 Möglichkeiten, Ihre Programme und Entwürfe zu verbessern; Addison-Wesley
Schäling, Boris: The Boost C++ Libraries; Xml Press
Bjarne Stroustrup´s C++ Style and Technique FAQ:
The C++ Resources Network:
C++ Reference:

[updated 24.02.2018]
Module offered in:
SS 2023 (probably), SS 2022, SS 2021, SS 2020, SS 2019
[Tue Mar 21 11:00:56 CET 2023, CKEY=pprog4, BKEY=pi2, CID=PIB-PRG4, LANGUAGE=en, DATE=21.03.2023]