Wi2019 Scientific Programming with C++
Semester | Wintersemester 2019/20 |
Vorlesender | Dr. Simon Praetorius |
Zeit und Ort |
V Do 5. DS (14:50-16:20), WIL A120 |
Prüfung | Mündliche Prüfung im Raum WIL B216 Termine: 11.02.2020, 20.02.2020, 27.020.2020 |
Schwerpunkte des Moduls sind Aspekte der Softwareentwicklung, wie beispielsweise die Programmierung auf Hochleistungsrechnern, objektorientierte Programmierung oder generische (template-basierte) Programmierung. Die Studierenden besitzen ein systematisches Verständnis von Aspekten der Entwicklung von Software zur effizienten Realisierung numerischer Algorithmen. Sie haben Erfahrungen in der Beurteilung, Anwendung und Erweiterung solcher Software.
In dem Modul im Wintersemester wird der Schwerpunkt auf die Softwareentwicklung mittels C++ gesetzt. Dabei können die Lerninhalte in drei zentralen Punkten zusammengefasst werden:
- Die Studierenden können mittels moderner C++ Programmierung ein Software-Projekt realisieren. Insbesondere auch mittels Techniken wie generischer Programmierung, Meta-Programmierung, und Expressiontemplates.
- Die Studierenden können Hilfsprogramme einsetzen, um die eigenen Programmcodes zu analysieren, zu debuggen, zu benchmarken und zu verwalten. Darunter zählen beispielsweise Compiler, Build Systeme, Versionskontrollsysteme, Debugger, und Profiler.
- Die Studierenden können (wissenschaftliche) Softwarebibliotheken verstehen und anwenden. Darunter zählen beispielsweise BLAS (Basic Linear Algebra Subroutines), LAPACK (Linear Algebra Package), STL (Standard Template Library), Dune (Distributed and Unified Numerics Environment), MTL4 (Matrix Template Library), und Boost (Zusammenstellung von C++ Bibliotheken).
Das Modul beinhaltet eine wöchentlich Übung zur C++-Programmierung und Programmierprojekte in Gruppen.
Verzeichnis mit Übungs- und Vorlesungsmaterial
https://gitlab.mn.tu-dresden.de/teaching/scprog/wi2019
Literatur und Material zur Vorlesung
- Online-References: cppreference.com, BLAS, LAPACK, DUNE, Git, Boost, CMake
- Cheat-sheets: Devhints, Git, Linux Command Line
- Tutorials: MTL4, Git
- Compiler: GCC, Clang, Intel Icc
- Discovering Modern C++: An Intensive Course for Scientists, Engineers, and Programmers, Peter Gottschling, 2015 [slub, online]
- References: Die C++ Programmiersprache (Bjarne Stroustrup), C++ Kurz & Gut (Kyle Loudon, Rainer Grimm) [slub]
- Beginners: C++ Primer (Stanley Lippman, Josee Lajoie, Barbara E. Moo) [online]
- Intermediate level: Effective Modern C++ (Scott Meyers) [slub, online], C++ Templates: The Complete Guide (David Vandevoorde, Nicolai M. Josuttis) [online]
- Experts: Modern C++ Design (Andrei Alexandrescu) [online], C++ Template Metaprogramming (David Abrahams, Aleksey Gurovoy) [online]