Object-Oriented Programming for Scientific Computing

Object-Oriented Programming for Scientific Computing
Term: Summer Term 2018
Lecturer: Ole Klein
Time and location: Wed 14-16h, COS (INF 230), large lecture hall
Exam: 25.7.2018, 14-16h

The lecture “Object-Oriented Programming for Scientific Computing” (OOPSC / 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), topics that are often skipped in introductory courses due to high complexity and time constraints.

Topics that are discussed in detail include:

  • Best practices in Scientific Computing
  • Class concepts
  • Dynamic memory allocation
  • Exception handling
  • Safe handling of resources
  • Template programming
  • Static vs. dynamic polymorphism
  • Traits and policies
  • Standard Template Library
  • Template metaprogramming

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. This exam will take place on Wed 25., during lecture time (14-16h), in the lecture hall.

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 STL

GitLab.com, registration and resources for the exercises

Lecture Slides

Here the lecture slides will be posted during the semester.

Slides 1 (18.04.)

Slides 2 (25.04.)

Slides 3 (02.05.)

Slides 4 (09.05.)

Slides 5 (16.05.)

Slides 6 (23.05.)

Slides 7 (30.05.)

Slides 8 (13.06.)

Slides 9 (20.06.)

Slides 10 (27.06.)

Slides 11 (04.07.)

Slides 12 (11.07.)


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

Exercise Sheets

Here the exercise sheets will be posted during the semester.

Sheet 1 (due 02.05.), matrix_broken.h, matrix_broken.cc, testmatrix.cc

Sheet 2 (due 09.05.)

Sheet 3 (due 16.05.)

Sheet 4 (due 23.05.)

Sheet 5 (due 30.05.)

Sheet 6 (due 06.06.)

Sheet 7 (due 13.06.)

Sheet 8 (due 27.06.), matrix.h, matrix.cc, testmatrix.cc

Sheet 9 (due 04.07.)

Sheet 10 (due 11.07.)

Sheet 11 (bonus sheet)

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