de | en

Advanced Programming

Module IN1503

This Module is offered by TUM Department of Informatics.

This module handbook serves to describe contents, learning outcome, methods and examination type as well as linking to current dates for courses and module examination in the respective sections.

Module version of SS 2012

There are historic module descriptions of this module. A module description is valid until replaced by a newer one.

available module versions
WS 2017/8SS 2012WS 2011/2

Basic Information

IN1503 is a semester module in English language at Master’s level which is offered in winter semester.

This Module is included in the following catalogues within the study programs in physics.

  • Catalogue of non-physics elective courses
Total workloadContact hoursCredits (ECTS)
150 h 60 h 5 CP

Content, Learning Outcome and Preconditions


- von-Neumann architecture; definition of algorithms; machine languages: compiler, linker, and interpreter; machine code
- variables, identifiers & expressions; comments & documentation; built-in datatypes, expressions, and assignments
- control structures, branches & scopes; while loops
- functions & functional programming; call-stack and the memory layout; call-by-reference, call-by-value, and call-by-const-reference; overloading; recursion
- applicative programming; source code organisation and the C precompiler; namespaces; for loops; enumerations
- pointers and arrays; dynamic memory allocation; structs
- dynamic data structures; simple sorting algorithms as demonstrator use case; algorithm complexity
- object-based programming; functions vs. operations; constructors and destructors; const operations
- object-oriented programming; polymorphism & inheritance
- type-generic programming

Learning Outcome

At the end of the module, students have a sound expertise in C/C++. They are able to remember and explain the underlying machine behaviour and the corresponding efficiency aspects. The participants can describe the C/C++ instruction set and, in particular, can distinguish the impacts and effects of high level language constructs on the machine level.
They are able to define and explain the fundamental programming paradigms and how they are represented by the C/C++ language. The students are able to analyse real-world problems and to design and implement an efficient software solution using the programming paradigms for considerably complex problems. They are able to verify the implementation critically.


Sound programming skills in one of the standard programming languages (such as Java, Python, Fortran, C/C++) are expected, experiences with an object-oriented programming language will be helpful.

Courses, Learning and Teaching Methods and Literature

Courses and Schedule

VO 2 Advanced Programming (IN1503) Chourdakis, G. Gallard, J. Neckel, T.
Responsible/Coordination: Bungartz, H.
Thu, 16:00–18:00, CH 27402
UE 2 Practical Advanced Programming Chourdakis, G. Gallard, J.
Responsible/Coordination: Bungartz, H.
dates in groups

Learning and Teaching Methods

This module comprises lectures and accompanying tutorials. The contents of the lectures will be taught by talks and presentations. Students will be encouraged to study literature and to get involved with the topics in depth. In the tutorials, concrete problems will be solved - partially in teamwork - and selected examples will be discussed.


Slides, whiteboard, exercise sheets


- Randall Hyde. Write Great Code I: Understanding the machine
- Randall Hyde. Write Great Code II: Thinking Low-level, Writing High-level
- Scott Meyers. Effective C++
- Scott Meyers. More Effective C++
- Walter Savitch. Absolute C++
- Bjarne Stroustrup. The C++ Programming Language

Module Exam

Description of exams and course work

The examination consists of a written exam of 75 minutes in which students show that they are able to find solutions to advanced problems arising in the field of programming with C/C++. Questions are used to assess the participant´s knowledge about the machine behavior and the computational efficiency arising from C++ statements. Definitions and properties of fundamental programming paradigms are examined by questions and code examples. Code snippets with questions or small implementation tasks are used to test the capability of designing, verifying or formulating code in terms of efficiency.

Exam Repetition

The exam may be repeated at the end of the semester.

Top of page