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

From Sccswiki
Jump to navigation Jump to search
(Created page with '{{Lecture | term = Winter 10/11 | lecturer = Univ.-Prof. Dr. Hans-Joachim Bungartz, Bernhard Gatzhammer, Michael Lieb | timeplace = tba. | credits = 6 SWS (6P) / 10 c…')
 
(Cancelation announcement)
 
(13 intermediate revisions by 2 users not shown)
Line 2: Line 2:
 
| term = Winter 10/11
 
| term = Winter 10/11
 
| lecturer = [[Univ.-Prof. Dr. Hans-Joachim Bungartz]], [[Bernhard Gatzhammer]], [[Michael Lieb]]
 
| lecturer = [[Univ.-Prof. Dr. Hans-Joachim Bungartz]], [[Bernhard Gatzhammer]], [[Michael Lieb]]
| timeplace = tba.
+
| 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)
+
| audience = Students of Computer Science (Master/Diplom), voluntary course, Module [https://www.in.tum.de/myintum/kurs_verwaltung/cm.html?id=IN2106 IN2106]  
<!--, 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]) -->
 
 
| exam = no final exam
 
| exam = no final exam
 
| tutorials = -
 
| tutorials = -
 
}}
 
}}
 +
 +
 +
= News =
 +
{| class="wikitable" valign="top"
 +
|-
 +
!valign="top" |05.10.2010 || Unfortunately, there were not enough registrations. Thus, the lab course is canceled.
 +
|-
 +
!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" |05.07.2010 || Ab sofort gibt es ein [http://www5.in.tum.de/lehre/vorlesungen/konkr_math/SS_10/allg/KlausurMerkblatt.pdf Merkblatt zur Klausur].
 +
|-
 +
!valign="top" |25.06.2010 || Wegen der hohen Nachfrage wurden zusätzlichen Abgabetermine für die Programmieraufgaben eingerichtet. Siehe [[#Programmieraufgaben |Programmieraufgaben]].
 +
|-
 +
!valign="top" |22.06.2010 || In der nächsten Vorlesung (25.6.) findet die Vorlesungsumfrage statt. Über zahlreiches Erscheinen würden wir uns sehr freuen. Außerdem weisen wir alle Freunde unseres Lehrstuhls auf den [http://www5.in.tum.de/wiki/index.php/Lehrstuhlausflug_2010 Lehrstuhlausflug 2010], einen bayerischen Triathlon, hin.
 +
|-
 +
!valign="top" |26.05.2010 || Auf Folie 25 der 5.Vorlesung muss es (b-a) statt b heißen. Dies ist nun korrigiert.
 +
|-
 +
!valign="top" |13.05.2010 || Um die Programmieraufgaben einreichen zu können, muss man sich für den E-Mail-Newsletter zur Vorlesung angemeldet haben (MyTUM-Portal). Weitere Details hierzu finden Sie [http://www5.in.tum.de/Abgabe_Numerisches_Programmieren/index.php hier].
 +
|-
 +
!valign="top" |10.05.2010 || Wie in den beiden Übungen letzten Freitag besprochen, gibt es folgende Änderungen: Die Übungsgruppe am Freitag Nachmittag wird aufgelöst. Stattdessen wir es vor der Vorlesung nun zwei Übungsgruppen geben, wahlweise eine "Mittagspausen"-Gruppe (9:30-11:30) und eine "Spätaufsteher"-Gruppe (10:00-12:00). Details sowie die Übungsräume finden Sie unter [[#Übungstermine |Übungstermine]].
 +
|-
 +
!valign="top" |07.05.2010 || Der Klausurtermin steht nun fest (siehe [[#Klausur |Klausur]]).-->
 +
|}
  
 
= Requirements =  
 
= Requirements =  
  
Basic knowledge of object oriented programming.
+
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 -->
+
 
 +
= Format =
 +
 
 +
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.
  
 
= 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 64: Line 93:
 
= Contents =  
 
= Contents =  
  
The lab course gives an application oriented introduction to 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><li>Template programming
+
<ul>
</li><li>t.b.a.
+
<li> Smart pointers for automated memory management in C++:
</li></ul>
+
  <ul>
 +
  <li> Basic principles and application scenarios of smart pointers </li>
 +
  <li> Smart pointer types </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>
 +
</ul>
 
<!--
 
<!--
 
</li><li>Finite-Difference methods for spatial discretisation of the partial differential equations
 
</li><li>Finite-Difference methods for spatial discretisation of the partial differential equations
Line 87: Line 141:
  
 
= Literature =
 
= Literature =
t.b.a.
+
<ul>
 +
<li> Effective C++, Scott Meyers, Addison Wesley </li>
 +
<li> C++ Templates: The Complete Guide, Nicolai M. Josuttis and David Vandevoorde, Addison Wesley Longman </li>
 +
</ul> 
 
<!--
 
<!--
 
<ul><li>M. Griebel, T. Dornseifer und T. Neunhoeffer: Numerical Simulation in Fluid Dynamics: A Practical Introduction. Siam Monographs on Mathematical Modeling and Computation. SIAM, Philadelphia, 1997.
 
<ul><li>M. Griebel, T. Dornseifer und T. Neunhoeffer: Numerical Simulation in Fluid Dynamics: A Practical Introduction. Siam Monographs on Mathematical Modeling and Computation. SIAM, Philadelphia, 1997.

Latest revision as of 15:29, 20 October 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.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.

Requirements

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

Format

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.

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.