Object-Oriented Programming for Scientific Computing

Object-Oriented Programming for Scientific Computing
Term: Winter Term 2020/21
Lecturer: Dr. Ole Klein
Time and location: Wed 14-16h, heiCONF audimax
Exam: TBA

Lecture Content

The lecture “Object-Oriented Programming for Scientific Computing” (OOPFSC / IOPWR) is a basic course in the Scientific Computing master program and one of the foundation courses of the specialization Simulation and Optimization.

The course teaches modern C++ programming skills from a Scientific Computing perspective. Special emphasis is given to modernizations and innovations from recent standards (C++11, C++14, C++17, and the upcoming C++20), topics that are often skipped in introductory courses due to high complexity and time constraints.

Topics that are discussed in detail include:

  • Short recapitulation of basics (data types, functions, templates, classes, etc.)
  • The C++ Standard Library (input/output, containers, algorithms, exceptions, etc.)
  • Advanced topics (dynamic polymorphism, RAII, template meta programming, SFINAE, etc.)
  • C++11 features (smart pointers, lambda expressions, variadic templates, threads, etc.)
  • C++14 features (generic lambdas, variable templates)
  • C++17 features (guaranteed copy elision, structured bindings, fold expressions)
  • Upcoming C++20 features (modules, concepts, ranges, coroutines)

The baseline for the course is the C++11 standard.

Online Classes

Due to the current pandemic and resulting restrictions the whole module will take place online, except for the written exam at the end of the semester.

You will find the video conference of the lecture under the link https://audimax.heiconf.uni-heidelberg.de/fxey-qqz7-xzfv-munz (heiCONF audimax). You don’t need any special equipment to join the lecture — just have some nice speakers or a headset ready and join the course.

The tutorials will also be online. They will be held by my assistant Stefan Meggendorfer under the link https://heiconf.uni-heidelberg.de/96pv-f9ad-wg9u-twj6 (heiCONF). The first meeting is Friday, 6.11., 11h, which will serve as an opportunity to form practice groups and decide on a timeslot that suits most participants. Please contact Stefan directly if you have any questions or can’t make it to this first meeting.

Contact Info

Please refer to my personal homepage if you have any questions or need to get in contact with me.

Exam and Exam Criteria

The successful completion of this module consists in active participation in the exercises (50% of possible points + presentation of your code) and a written exam at the end of the semester. The exact time and date of the exam is currently TBA, since exams are currently organized in a centralized fashion to take ever-changing regulations into account. Details will be communicated as soon as they are available, but you can expect a date in the last week of the semester or the week after.

The module can be used as part of the following study programs:

  • Master Scientific Computing
  • Master Applied Computer Science
  • Master Physics (Specialisation Computational Physics)

and in other study programs (e.g., Bachelor Applied Computer Science) as per the usual rules regarding inclusion of Master program courses / field of application.


Access to the official standard (or drafts thereof, at least)

“Get started” page with literature recommendations

Online quick reference for C++ language and Standard Library

GitLab.com, registration and resources for the exercises

Lecture Slides

Here the lecture slides will be posted during the semester.

Lecture slides (last update: 04.12.)


Please register in M√ľsli for participation in the exercises. Contact me if you are asked for a Matrikelnummer and don’t have one (e.g., some PhD students).

Part of the course concept is the active participation in collaborative programming efforts. This includes working in groups, commiting to a shared code repository, and handing in your exercise solution by applying specific tags to your commits. We will be using GitLab (gitlab.com) for this. Further instructions can be found in the following document:

Guidelines for GitLab setup and coding style

This year, the tutorials will be completely online. See above under “Online Classes” for more details.

Exercise Sheets

Here the exercise sheets will be posted during the semester.

Sheet 1, vector_broken.hh, vector_broken.cc, testvector.cc

Sheet 2

Sheet 3

Sheet 4

Sheet 5, matrix.hh, matrix.cc, testmatrix.cc

Impressum  |  Haftungsausschluss  |  Datenschutzerkl√§rung  |  generated with Hugo v0.69.0