Object-Oriented Programming for Scientific Computing

Object-Oriented Programming for Scientific Computing
Term: Winter Term 2021/22
Lecturer: Dr. Ole Klein
Time and location: Tue, 16-18h, INF 205/SR A
Exam: to be announced

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 new 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)
  • C++20 features (modules, concepts, ranges, coroutines)

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

Lecture Notes: Modern C++ Programming Techniques for Scientific Computing

Time and Place

The university aims for lectures in presence for this winter semester, i.e., the lecture will be held in one of the seminar rooms of the Mathematikon.

The ever-changing regulations may make it necessary to change the lecture format at some point in time, e.g., switch to online lessons like last winter semester. I will keep you in the loop regarding any changes to the lecture time, place, or mode that become necessary.

Please register in Müsli (see below), so that you can be reached via mail.

Contact Info

The tutorials will be held by my assistant Stefan Meggendorfer. Please contact him if you have questions regarding the exercises or formal criteria. Please refer to my personal homepage if you have questions about the lecture itself 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 rules regarding inclusion of Master program courses / field of application.

Resources

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.

Slides from last year:

Lecture slides (from 2020/2021)

Exercises

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, vector_broken.hh, vector_broken.cc, testvector.cc

Sheet 2

Sheet 3

Sheet 4

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

Sheet 6

Sheet 7

Sheet 8

Sheet 9

Sheet 10

Sheet 11

Sheet 12

Impressum  |  Haftungsausschluss  |  Datenschutzerklärung  |  generated with Hugo v0.80.0