Selected Topics in Scientific Computing – Sommersemester 2021

Früher oder später kommst du als Mathematiker*in an den Punkt, deine theoretischen Erkenntnisse in praktischen Programmiercode zu gießen. Dies kann unerwartet schnell zu einem Abenteuer mit ungewissem Ausgang werden, und jeder Schritt wirft neue Fragen auf:

  • Wie beginne ich, und was ist ein guter Programmierstil?
  • Ist das ein Rundungsfehler oder ein Programmierfehler?
  • Kann mein Algorithmus mir sagen, ob er korrekt arbeitet
  • Wie kann ich mein Programm mit einfachen Mitteln schneller und effizienter machen?

In dieser Vorlesung betrachten wir anhand ausgesuchter praktischer Problemstellungen einige Fallstricke, die uns beim wissenschaftlichen Programmieren begegnen können und wie wir damit umgehen. Wir arbeiten vornehmlich in python, Programmierkenntnisse können hilfreich sein, sind aber keine Voraussetzung.

Termine und Prüfungsleistung

Typ Ergänzungsvorlesung
Dozent Dr. Kai Werth
Termin Fr, 10-12 über MS TEAMS
Sprache Deutsch (or english if prefered)
Creditpoints 3

 

Die Teilnehmer*innen werden in der ersten Vorlesungswoche in eine MS TEAM Gruppe eingeladen, in der die Vorlesung als interaktive Online-Veranstaltung abgehalten wird.

Die Vorlesungsreihe wird in 3 bis 5 Blöcke unterteilt und zu jedem Block wird es ein Übungsblatt geben, welches in der Vorlesung besprochen wird. Hierzu dürfen sich die Student*innen in Gruppen bis 3 Teilnehmer*innen zusammenschließen, gemeinsam bearbeiten und in der Vorlesung präsentieren.

Die Vorlesung gilt als bestanden, wenn 50% der Übungen erfolgreich bearbeitet und präsentiert worden sind. Eine aktive Teilnahme an den Übungen wird vorausgesetzt.

Ablauf der Vorlesung:

Um den Einstieg mit der Programmiersprache python so einfach wie möglich zu machen, werden wir auf einer eigenen Jupyter-Hub Instanz arbeiten, es wird also zunächst keine eigene python-Installation benötigt. Hier wird auch das Vorlesungsskript als interaktives Jupyter-Notebook liegen und hier können Templates zum Bearbeiten der Übungen hochgeladen und die fertigen Programme abgelegt werden.

Block 1: Rechnergenauigkeit und floating point filtering

Wir gehen näher auf die Darstellung von Fließkommazahlen im Rechner ein, demonstrieren die Auswirkungen von Rechenfehlern und zeigen eine Technik, damit umzugehen.

Block 2: Implementierung einer Flüssigkeitssimulation

Wir entwickeln gemeinsam ein einfaches finites Volumen Verfahren (FV) zum Simulieren der Kelvin-Helmholz Instabilität. Hieran üben wir verschiedene Konzepte der Softwareentwicklung, des Code Profilings und Debuggings

Block 3: Parallelisiertes Rechnen auf GPU und CPU

Kaum eine Softwarebibliothek kommt mehr ohne sie aus: die Parallelisierung. Wir lernen verschiedene Konzepte um unsere Programme mittels OpenCL, OpenMP und MPI auf CPU und GPU zu parallelisieren.