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 WS 2011/2

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

available module versions
SS 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

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

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 illustrate the fundamental programming paradigms and how they are represented by the C/C++ language. The students are able to analyse and apply these techniques for real-world challenges and to design, realise, and verify the implementation of considerably complex applications in an efficient manner.

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

ArtSWSTitelDozent(en)Termine
VO 2 Advanced Programming (IN1503) Donnerstag, 16:00–18:00
UE 2 Practical Advanced Programming Termine in Gruppen

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

Module Exam

Description of exams and course work

Type of Assessment: exam In the exam students should prove to be able to identify a given problem and find solutions within limited time. The examination will completely cover the content of the lectures. The answers will require own formulations. In addition, questions requiring short calculations and/or programming tasks may be posed. Questions on advanced aspects in C/C++ assess the students' knowledge on efficiency aspects. The definition and illustration of fundamental programming paradigms are tested with various assignments. Tasks on small code snippets allow to evaluate the participants' capability to formulate and/or verify the implementation of applications in an efficient manner.

Exam Repetition

There is a possibility to take the exam at the end of the semester.

Condensed Matter

When atoms interact things can get interesting. Fundamental research on the underlying properties of materials and nanostructures and exploration of the potential they provide for applications.

Nuclei, Particles, Astrophysics

A journey of discovery to understanding our world at the subatomic scale, from the nuclei inside atoms down to the most elementary building blocks of matter. Are you ready for the adventure?

Biophysics

Biological systems, from proteins to living cells and organisms, obey physical principles. Our research groups in biophysics shape one of Germany's largest scientific clusters in this area.