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

From Sccswiki
Jump to navigation Jump to search
(Cancelation announcement)
 
(11 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 = We., 16:00-18:00, Room: 02.07.023
+
| timeplace = Wed., 14:00-16:00, Room: MI 02.07.023
| credits = tba. <!--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 = -
Line 14: Line 13:
 
{| class="wikitable" valign="top"
 
{| class="wikitable" valign="top"
 
|-
 
|-
!valign="top" |01.07.2010 ||  Die Vorbesprechung findet am 14.07 von 16:00 bis 17:00 Uhr im Raum 02.07.023 statt.
+
!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" |25.06.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" |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" |25.06.2010 || Wegen der hohen Nachfrage wurden zusätzlichen Abgabetermine für die Programmieraufgaben eingerichtet. Siehe [[#Programmieraufgaben |Programmieraufgaben]].
Line 33: Line 36:
 
= 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 85: 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 108: 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.