Wi2019 Scientific Programming with C++
Term | Winter Term 2019/20 |
Lecturer | Dr. Simon Praetorius |
Time and location |
Lecture Thu 5. DS (14:50-16:20), WIL A120 |
Examination | Oral exam in room WIL B216 Dates: 2020/02/11, 2020/02/20, 2020/02/27 |
The focus of this module lies on aspects of software development like programming on high-performance computers, object-oriented software design, generic (template-based) programming, and the efficient implementation of numerical algorithms. Additionally experience in analysis, application and extension of software and software libraries is developed. This module in the winter term especially focuses on software development with the programming language C++.
Three main learning goals can be formulated:
- You know how to program with modern C++, using generic programming and advanced techniques, like meta programming, expression templates, and concepts.
- You know how to use programming tools and you can apply these tools to debug, benchmark, and manage your code. The list of tools include compilers, build systems, version control, debuggers, and profilers.
- You can read, understand, and utilize (scientific) software libraries, like BLAS (Basic Linear Algebra Subroutines), LAPACK (Linear Algebra Package), STL (Standard template library), Dune (framework for the discretization of partial differential equations), MTL4 (Matrix Template Library), Boost (portable C++ library).
There are exercises every week to practice the C++ programming. During the semester programming projects in groups are assigned.
Repository with Lecutre material and tutorials
https://gitlab.mn.tu-dresden.de/teaching/scprog/wi2019
Literature recommendations
- 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]