Object-Oriented Programming for Scientific Computing Dr. Ole Klein Interdisciplinary Center for Scientific Computing Heidelberg University
[email protected] Winter Semester 2020/21 Dr. Ole Klein (IWR) Object-Oriented Programming Winter Semester 2020/21 1 / 277 Introduction Goals of the Lecture Prerequisites and Objectives Prerequisites • Familiarity with at least one programming language • At least procedural programming in C / C++ • Willingness to program in practice Objectives • Improved programming skills • Introduction of modern programming techniques • Strong focus on topics of relevance to Scientific Computing Dr. Ole Klein (IWR) Object-Oriented Programming Winter Semester 2020/21 2 / 277 Introduction Goals of the Lecture Course Outline General course outline: Short recapitulation of basics data types, functions, templates, classes, etc. The C++ Standard Library input/output, containers, iterators, algorithms, exceptions, etc. Advanced topics dynamic polymorphism, RAII, template meta programming, static polymorphism, SFINAE, etc. C++11 features smart pointers, lambda expressions, variadic templates, random numbers, chrono library, threads, etc. C++14 features generic lambdas, variable templates C++17 features guaranteed copy elision, structured bindings, fold expressions Upcoming C++20 features modules, concepts, ranges, coroutines The baseline for the lecture is the C++11 standard, with changes due to C++14 and C++17 taken into account. The new features of the upcoming C++20 standard will be introduced where appropriate.