Masterpraktikum Scientific Computing - Advanced C++ Programming

From Sccswiki
Jump to navigation Jump to search
Winter 10/11
Univ.-Prof. Dr. Hans-Joachim Bungartz, Bernhard Gatzhammer, Michael Lieb
Time and Place
Wed., 14:00-16:00, Room: MI 02.07.023
Students of Computer Science (Master/Diplom), voluntary course, Module IN2106
no final exam
Semesterwochenstunden / ECTS Credits
6 SWS (6P) / 10 credits


05.10.2010 Unfortunately, there were not enough registrations. Thus, the lab course is canceled.
05.08.2010 Extended registration possible via TUMonline.
01.07.2010 A preliminary discussion will take place in room 02.07.023 on 14.07.2010, 16:00-17:00. The attendance is compulsory.


Basic knowledge in object oriented programming and C/C++. Interest in generic template programming techniques.


The lecture consists of practical programming excercises mainly, to be exercised by the students. The students are supposed to form teams of 2/3 people.

There will be 4 Worksheets to be worked with. Before each worksheet a lecture will be given to introduce the next worksheet and to discuss the results of the previous worksheet.

The results of each worksheet have to be submitted before the end of the respective deadline. After each worksheet a short evaluation of the submitted work will be done with every team.


The timeline is not fixed yet.


The lab course gives an application oriented introduction to some of the following topics in advanced C++ programming (lecturers may select certain deepening aspects):

  • Smart pointers for automated memory management in C++:
    • Basic principles and application scenarios of smart pointers
    • Smart pointer types
    • Reference counting techniques
    • Performance comparison with plain pointers
  • Using type traits to build a static size linear algebra library:
    • Basic principles and application scenarios of type traits
    • Externalizing matrix/vector operations via type traits
    • Selective function overloads with the SFINAE (substitution-failure-is-not-an-error) technique
    • View proxies to vector/matrix classes with zero-runtime overhead
    • Runtime comparison
  • Using expression templates to speedup vector/matrix computations
    • Basic principles and application scenarios of expression templates
    • Eliminating temporary creation by delayed expression evaluation
    • Runtime comparison
  • Curiosly recurring template pattern (CRTP)


  • Effective C++, Scott Meyers, Addison Wesley
  • C++ Templates: The Complete Guide, Nicolai M. Josuttis and David Vandevoorde, Addison Wesley Longman