Advanced Programming
Module IN1503
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 WS 2011/2
There are historic module descriptions of this module. A module description is valid until replaced by a newer one.
Whether the module’s courses are offered during a specific semester is listed in the section Courses, Learning and Teaching Methods and Literature below.
available module versions | ||
---|---|---|
WS 2017/8 | SS 2012 | WS 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.
- Focus Area Bio-Sensors in M.Sc. Biomedical Engineering and Medical Physics
- Catalogue of non-physics elective courses
Total workload | Contact hours | Credits (ECTS) |
---|---|---|
150 h | 60 h | 5 CP |
Content, Learning Outcome and Preconditions
Content
- 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
- 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.
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.
Preconditions
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
WS 2022/3
WS 2021/2
WS 2020/1
WS 2019/20
WS 2018/9
WS 2017/8
WS 2016/7
WS 2015/6
WS 2014/5
WS 2013/4
WS 2012/3
Type | SWS | Title | Lecturer(s) | Dates | Links |
---|---|---|---|---|---|
VO | 2 | Advanced Programming (IN1503) |
Ashraf, H.
Chourdakis, G.
Neckel, T.
Responsible/Coordination: Bungartz, H. |
Thu, 10:00–12:00, Interims I 102 |
|
UE | 2 | Practical Advanced Programming |
Ashraf, H.
Chourdakis, G.
Gratl, F.
Neckel, T.
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.
Media
Slides, whiteboard, exercise sheets
Literature
- 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
- 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.