Fortgeschrittene Konzepte der objektorientierten Programmierung
Fortgeschrittene Konzepte der objektorientierten Programmierung
Term: | Summer Term 2020 |
Lecturer: | Peter Bastian |
Time and location: | Di 16-18 INF 205 SR 2 |
Exam: |
Inhalt
In diesem Pro-Seminar werden wir Konzepte der objektorientierten Programmierung betrachten die in ihrer Schwierigkeit deutlich über den Inhalt der Vorlesung Einführung in die Praktische Informatik hinaus geht. Insbesondere sollen die Neuerungen der Standards C++-11, 14, 17 und 20, fortgeschrittene Konzepte der generische Programmerung wie template meta programming, expression templates oder variadic templates, C++ threads sowie Neuerungen der Standardbibliothek und auch die Kopplung von C++ mit Python beleuchtet werden.
ZU diesem Seminar gibt es auch eine Moodle Seite auf der dann die Präsentationen verfügbar sein werden.
Vorgehen aufgrund der Coronapandemie Stand: 27. April 2020
- Bis auf weiteres finden alle Treffen online statt, als Termin bleibt Dienstags, 16:15 Uhr
- Am Dienstag, den 5. Mai wird Prof. Bastian einen Vortrag über die Vorbereitung eines Seminarvortrages halten. Einen Link zu HeiConf erhalten die Seminarteilnehmer.
- Die Seminarvorträge werden ab 26. Mai stattfinden (jeweils zwei Vorträge pro Termin)
Aufgaben in einem (Pro-)seminar
- Erschließen des Themas anhand wissenschaftlicher Literatur
- Ausarbeiten und Halten eines Vortrages von etwa 45 Minuten Dauer (inklusive Diskussion), Dauer 60 Minuten bei Seminar
- Regelmäßige Teilnahme an den Seminarterminen und Mitwirkung in der Diskussion
- Ausarbeitung von ca. 10 Seiten (nur Seminar)
Siehe auch Modulhandbuch Informatik
Themen
Hier schon mal eine Übersicht der Themen mit einem ersten Einstieg in die Literatur.
- Constness in Funktionen, Klassen und der Standardbibliothek
- Stroustrup book http://www.stroustrup.com/4th.html bzw. jedes andere C++ Buch
- Exceptions
- Stroustrup book http://www.stroustrup.com/4th.html
- Zusätzlich zu Benutzung auch eventuell Implementierung, stack unwinding https://arobenko.gitbooks.io/bare_metal_cpp/content/compiler_output/exceptions.html
- C++-11 Features Überblick und Auswahl, vor allem Auto, decltype, lambda functions, constexpr, with less detail: object construction, variadic templates, threads
- http://www.stroustrup.com/C++11FAQ.html, aber das ist schon zuviel
- http://www.stroustrup.com/what-is-2009.pdf
- C++-14 - C++-17 Features
- Liste der Features https://en.wikipedia.org/wiki/C%2B%2B14
- Liste der Features https://en.wikipedia.org/wiki/C%2B%2B17
- Move constructors, copy elision, rvalue references
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2027.html
- https://www.drdobbs.com/move-constructors/184403855
- Templates revisited, Traits und Policy Klassen
- Josuttis et al: C++ Template - The Complete Guide, 2nd Ed.
- Variadic templates: Anwendung tuples, type-tree
- Josuttis et al: C++ Template - The Complete Guide, 2nd Ed.
- http://www.jot.fm/issues/issue_2008_02Ich Webseite/article2/
- http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2087.pdf
- SFINAE
- https://jguegant.github.io/blogs/tech/sfinae-introduction.html
- Josuttis et al: C++ Template - The Complete Guide, 2nd Ed.
- Template meta programming und Expression templates
- Josuttis et al: C++ Template - The Complete Guide, 2nd Ed.
- Smart pointers, new in C++11
- Josuttis et al: C++ Template - The Complete Guide, 2nd Ed.
- C++-20 und Concepts
- https://hackaday.com/2019/07/30/c20-is-feature-complete-heres-what-changes-are-coming/
- https://www.youtube.com/watch?v=u_ij0YNkFUs&t=220s
- Standard library, algorithms, Überblick C++11-20 features
- http://www.stroustrup.com/C++11FAQ.html, starting with section Algorithm improvements
- https://isocpp.org/wiki/faq/cpp11-library-stl
- C++ Threads
- https://dl.acm.org/doi/10.1145/1926385.1926394
- Williams paper https://accu.org/index.php/journals/1584
- Task-based programming with Intel TBB
- SIMD Vektorisierung
- Design Patterns: Creational Patterns
- Design Patterns: Structural Patterns
- Design Patterns: Behavioral Patterns
- C++ / Python Integration
- Ranges Library in C++-20