Ruprecht-Karls-Universität Heidelberg

This is an archive of our old website and not updated anymore

The current website can be found at

Object-Oriented Programming for Scientific Computing

Lecturer: Ole Klein

Lectures: Tue 16-18 in INF 252 (Chemistry Lecture Building), Lecture Hall East

Exercises: Thu 11-13 and Thu 14-16 in INF 350 (OMZ), Room U014


Solid basic knowledge of C++

Lecture notes:

Notes (in German) from previous years

English lecture slides will be generated during the semester and made available here.

Thematic Scope:

  • Short recapitulation of basics of object-oriented programming in C++ (classes, methods, operators)
  • Memory management (variables, references, pointers)
  • Constant values and objects
  • Error handling (exceptions)
  • Inheritance
  • Dynamic polymorphism (virtual inheritance)
  • Static polymorphism (templates)
  • The Standard Template Library (STL containers, iterators and algorithms)
  • Traits
  • Policies
  • Template metaprogramming
  • Expression templates
  • C++11 threads
The lectures are designed to give insight into new developments and possibilities due to the C++11 standard. If time permits, the parts concerning C++11 will be extended and code excerpts taken from the DUNE project will be used to illustrate real-world application of the language constructs.


Successful completion of the module typically requires passing an exam at the end of the semester. For PhD students special conditions may apply. Details will be given in the first lecture.

Prerequisite for admission to the exam are achieving 50% of the points in the exercises and active participation in the exercise group.


The exam will take place in the last week of the semester during lecture time.


The lecture series and accompanying exercises are managed using a website created by the Faculty of Mathematics and Computer Science. Due to limitations of the backend PhD students have to register using a special link if they do not yet have an account from their undergrad days.

  1. Registration link for Bachelor and Master students
  2. Registration link for PhD students
  3. Direct link to the lecture subpage
Exercise solutions have to be submitted by upload to a source code management website called GitLab. A detailed tutorial for setting up an exercise group project and using it for development can be found below. All tutors require access to the repositories, their usernames can be requested by mail. Projects and submissions have to follow basic guidelines to be accepted for grading.


  1. Short summary of procedural programming in C++.
  2. C++11 FAQ from Bjarne Stroustrup.
  3. Bjarne Stroustrup: The C++ Programming Language, 4th edition, Addison Wesley Pub Co Inc, 2013.
  4. David Vandevoorde, Nicolai Josuttis: C++ templates: the complete guide, Addison-Wesley, 2003.
  5. Nicolai M. Josuttis: The C++ standard library: a tutorial and reference, 2nd edition, Addison-Wesley, 2012.

Revision: 2127     Letzte Änderung: 2015-07-07 19