Object-Oriented Programming for Scientific Computing

Object-Oriented Programming for Scientific Computing
Term: Summer Term 2017
Lecturer: Ole Klein
Time and location: Lecture: Tue 16-18, INF 227 (KIP) / HS 2; Exercises: Thu 16-18, INF 205 / Computer Pool
Exam: last week of the semester, during lecture time

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.

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.4.) (matrix.h, matrix.cc, testmatrix.cc)

Slides 2 (25.4.)

Slides 3 (2.5.)

Slides 4 (9.5.)

Slides 5 (16.5.)

Slides 6 (23.5.)

Slides 7 (30.5.)

Slides 8 (6.6.)

Slides 9 (13.6.)

Slides 10 (20.6.)

Slides 11 (27.6.)


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. Instructions for this 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 (19.4., due 2.5.)

Sheet 2 (25.4., due 9.5.) (matrix_broken.h, matrix_broken.cc, testmatrix.cc)

Sheet 3 (2.5., due 16.5.)

Sheet 4 (9.5., due 23.5.)

Sheet 5 (16.5., due 30.5.)

Sheet 6 (23.5., due 6.6.)

Sheet 7 (30.5., due 13.6.)

Sheet 8 (6.6., due 20.6.)

Sheet 9 (13.6., due 27.6.)

Sheet 10 (20.6., due 4.7.)

Sheet 10 (28.6., due 11.7.)

Impressum  |  generated with Hugo v0.16