Object-Oriented Programming for Scientific Computing
Lecturer: Ole KleinLectures: Tue 16-18 in INF 252 (Chemistry Lecture Building), Lecture Hall East
Exercises: Thu 11-13 and Thu 14-16 in INF 350 (OMZ), Room U014
Prerequisites:
Solid basic knowledge of C++Lecture notes:
Notes (in German) from previous yearsEnglish lecture slides will be generated during the semester and made available here.
- 1st lecture (14.4.)
- 2nd lecture (21.4.)
- 3rd lecture (28.4.)
- 4th lecture (5.5.)
- 5th lecture (12.5.)
- 6th lecture (19.5.)
- 7th lecture (26.5.)
- 8th lecture (2.6.)
- 9th lecture (9.6.)
- 10th lecture (16.6.)
- 11th lecture (23.6.)
- 12th lecture (30.6.)
- 13th lecture (7.7.)
Thematic Scope:
- Short recapitulation of basics of object-oriented programming in C++ (classes, methods, operators)
- Memory management (variables, references, pointers)
- Constant values and objects
- Error handling (exceptions)
- Inheritance
- Dynamic polymorphism (virtual inheritance)
- Static polymorphism (templates)
- The Standard Template Library (STL containers, iterators and algorithms)
- Traits
- Policies
- Template metaprogramming
- Expression templates
- C++11 threads
Formalities:
Successful completion of the module typically requires passing an exam at the end of the semester. For PhD students special conditions may apply. Details will be given in the first lecture.Prerequisite for admission to the exam are achieving 50% of the points in the exercises and active participation in the exercise group.
Exam:
The exam will take place in the last week of the semester during lecture time.
Exercises:
The lecture series and accompanying exercises are managed using a website created by the Faculty of Mathematics and Computer Science. Due to limitations of the backend PhD students have to register using a special link if they do not yet have an account from their undergrad days.
- Registration link for Bachelor and Master students
- Registration link for PhD students
- Direct link to the lecture subpage
- Tutorial for GitLab
- Guidelines for projects and coding
- 1st exercise sheet (14.4.)
- 2nd exercise sheet (21.4.)
- 3rd exercise sheet (28.4.)
- 4th exercise sheet (5.5.)
- 5th exercise sheet (12.5.)
- 6th exercise sheet (19.5.)
- 7th exercise sheet (26.5.) (matrix_double.h, matrix_double.cc, test_matrix_double.cc)
- 8th exercise sheet (2.6.)
- 9th exercise sheet (9.6.)
- 10th exercise sheet (16.6.)
- 11th exercise sheet (23.6.)
- 12th exercise sheet (30.6.)
- 13th exercise sheet (7.7.)
Literature:
- Short summary of procedural programming in C++.
- C++11 FAQ from Bjarne Stroustrup.
- Bjarne Stroustrup: The C++ Programming Language, 4th edition, Addison Wesley Pub Co Inc, 2013.
- David Vandevoorde, Nicolai Josuttis: C++ templates: the complete guide, Addison-Wesley, 2003.
- Nicolai M. Josuttis: The C++ standard library: a tutorial and reference, 2nd edition, Addison-Wesley, 2012.