Difference between revisions of "Masterpraktikum Scientific Computing - Advanced C++ Programming"

From Sccswiki
Jump to navigation Jump to search
Line 4: Line 4:
 
| timeplace = Wed., 14:00-16:00, Room: MI 02.07.023
 
| timeplace = Wed., 14:00-16:00, Room: MI 02.07.023
 
| credits = 6 SWS (6P) / 10 credits
 
| credits = 6 SWS (6P) / 10 credits
| audience = Students of Computer Science (Master/Diplom), voluntary course, Module [https://www.in.tum.de/myintum/kurs_verwaltung/cm.html?id=IN2106 IN2106] <!--/[https://www.in.tum.de/myintum/kurs_verwaltung/cm.html?id=IN8904 IN8904])<br>Students of Mathematics (Master, voluntary course)<br>Students of Computational Science and Engineering (Master, voluntary course, Module [https://www.in.tum.de/myintum/kurs_verwaltung/cm.html?id=IN2186 IN2186]) -->
+
| audience = Students of Computer Science (Master/Diplom), voluntary course, Module [https://www.in.tum.de/myintum/kurs_verwaltung/cm.html?id=IN2106 IN2106]  
 
| exam = no final exam
 
| exam = no final exam
 
| tutorials = -
 
| tutorials = -
Line 13: Line 13:
 
{| class="wikitable" valign="top"
 
{| class="wikitable" valign="top"
 
|-
 
|-
!valign="top" |25.06.2010 || Registration possible via TUMonline.
+
!valign="top" |05.08.2010 || Extended registration possible via TUMonline.
 
|-
 
|-
 
!valign="top" |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.
 
!valign="top" |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.
Line 34: Line 34:
 
= Requirements =  
 
= Requirements =  
  
Basic knowledge in object oriented programming and C/C++.
+
Basic knowledge in object oriented programming and C/C++. Interest in generic template programming techniques.
<!-- Module IN1503 Introduction to Programming (Module IN1503), Introduction to Scientific Computing (Module IN 2005) or equivalent knowledge -->
 
  
  
 
= Timeline =
 
= Timeline =
  
 
+
The timeline is not fixed yet.
The timeline is not fixed yet
 
 
<!--
 
<!--
 
, i.e. it might change throughout the upcoming weeks.
 
, i.e. it might change throughout the upcoming weeks.
Line 88: Line 86:
 
The lab course gives an application oriented introduction to some of the following topics in advanced C++ programming (lecturers may select certain deepening aspects):
 
The lab course gives an application oriented introduction to some of the following topics in advanced C++ programming (lecturers may select certain deepening aspects):
 
<ul>
 
<ul>
<li> Template type traits and policies </li>
+
<li> Smart pointers for automated memory management in C++:
<li> Expression templates </li>
+
  <ul>
<li> Iterators </li>
+
  <li> Basic principles and application scenarios of smart pointers </li>
<li> Functors </li>
+
  <li> Smart pointer types </li>
<li> Smart pointers </li>
+
  <li> Reference counting techniques </li>
 +
  <li> Performance comparison with plain pointers </li>
 +
  </ul>
 +
  </li>
 +
<li> Using type traits to build a static size linear algebra library:
 +
  <ul>
 +
  <li> Basic principles and application scenarios of type traits </li>
 +
  <li> Externalizing matrix/vector operations via type traits </li>
 +
  <li> Selective function overloads with the SFINAE (substitution-failure-is-not-an-error) technique </li>
 +
  <li> View proxies to vector/matrix classes with zero-runtime overhead </li>
 +
  <li> Runtime comparison </li>
 +
  </ul> 
 +
  </li>
 +
<li> Using expression templates to speedup vector/matrix computations
 +
  <ul>
 +
  <li> Basic principles and application scenarios of expression templates </li>
 +
  <li> Eliminating temporary creation by delayed expression evaluation </li>
 +
  <li> Runtime comparison </li>
 +
  </ul>
 +
  </li>
 +
 
 
<li> Curiosly recurring template pattern (CRTP) </li>
 
<li> Curiosly recurring template pattern (CRTP) </li>
 
</ul>
 
</ul>

Revision as of 12:50, 17 July 2010

Term
Winter 10/11
Lecturer
Univ.-Prof. Dr. Hans-Joachim Bungartz, Bernhard Gatzhammer, Michael Lieb
Time and Place
Wed., 14:00-16:00, Room: MI 02.07.023
Audience
Students of Computer Science (Master/Diplom), voluntary course, Module IN2106
Tutorials
-
Exam
no final exam
Semesterwochenstunden / ECTS Credits
6 SWS (6P) / 10 credits
TUMonline
{{{tumonline}}}



News

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.

Requirements

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


Timeline

The timeline is not fixed yet.

Contents

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)

Literature

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

Material

t.b.a.