WiSe 18/19: Introduction to C++
Sandro Andreotti, Chris Bielow, Hannes Hauswedell
Comments
Summary
This class gives an introduction to programming in C++ and in the second half also teaches some intermediate skills. No previous knowledge of C++ (or C) is required, but we assume that you have at least some general programming experience.
Target audience
- Bioinformatics Bachelor students before their third semester (unless they are proficient in C++)
- Bioinformatics Master students before their first semester if they did not learn C++ in their Bachelor's program (e.g. if they did not study at FUB before) [highly recommended, but you won't get credits]
- anyone else interested in learning C++ (e.g. Informatics Bachelor students) provided there is sufficient space [they can get credits as ABV]
Language of the lectures and tests is English, but all teachers also speak German.
Timeframe
30.09.2018 Deadline for sign up in the KVV
08.10.2018 - 12.10.2018 (one week before the semester)
25.02.2019 - 08.03.2019 (two weeks after the semester)
Every day 10:00 - 12:00 (lecture) and 13:00 - 17:00 (computer lab)
It is possible to attend only the first week, but if you plan on doing so, please do not register for the class to not take away someone's place who wants to attend the full course. [Obviously you will also not get credits for attending only the first week]
Credits
There is a test at the end of each week. To receive the credits for this class (5 ECTS) you need to get at least 50% of the combined points of all three tests. There is no grade, only pass (or fail).
Topics (WIP)
1. Week (crash course)
- C++ Overview (History, paradigms, "Modern C++")
- Compilers and basics of the build process
- Types, variables, constants, references, initialisation, arithmetics
- basic I/O
- Loops, control statements
- Functions and functions objects
- simple class types
- simple class and function templates
- STL container types
2. Week
- Memory model, stack vs heap, pointer types, new and delete, rvalue references
- OOP (Inheritance,virtual functions and abstract base classes)
- compile time programming (constexpr and more templates)
3. Week
- Parallelisation
- performance optimisations and profiling
- Error handling and exceptions
- alternatives to OOP (CRTP and possibly C++20 Concepts)
Recommended reading
- Start here: https://isocpp.org/tour (the first lectures are based on the tour)
- The "Super-FAQ" (https://isocpp.org/faq) covers very many questions, both, new and intermediate programmers might have, as well as hints for people coming from other programming languages
- CPPReference: https://en.cppreference.com/w/ (difficult to read in the beginning, but very useful once you get used to the style)
28 Class schedule
Regular appointments
Summary
This class gives an introduction to programming in C++ and in the second half also teaches some intermediate skills. No previous knowledge of C++ (or C) is required, but we assume ... read more