Trainingskurs "Advanced C++ with Focus on Software Engineering"

Anfang
06.06.2017 07:00 Uhr
Ende
09.06.2017 14:30 Uhr
Veranstaltungsort
Jülich Supercomputing Centre, Rotunde Geb. 16.4, R. 301

Zielgruppe

Wissenschaftler, die C++ effizient nutzen wollen

Inhalt:

 

Voraussetzungen:

Course participants should have a solid base on C++ and at least one year of experience with the language is needed.


Participants are requested to bring their own notebook. The installed compiler should be at least C++ 11, or even better C++ 14 or C++ 17.

Sprache:

Der Kurs wird auf Englisch gehalten.

Dauer:

4 Tage

Zeit::

6. - 9. Juni 2017, 9:00-17:30

Ort:

Jülich Supercomputing Centre, Rotunde Geb. 16.4, R. 301

Teilnehmerzahl:

maximal 30 Teilnehmer

Referent:

Klaus Iglberger, Erlangen

Anmeldung:

Der Kurs ist ausgebucht.


This advanced C++ training is a course on object-oriented (OO) software design with the C++ programming language. The focus of the training are the essential OO and C++ software development principles, concepts, idioms, and best practices, which enable programmers to create professional, high-quality code. Additionally, the course gives insight into kernel development with C++. The course will not address special areas and applications of C++, such as for instance Template Meta Programming (TMP), or the quirks and curiosities of the C++ language. It rather teaches guidelines to develop mature, robust, maintainable, and efficient C++ code.

After this course, participants will:

  • have a detailed understanding of the essential OO design principles
  • have gained knowledge about fundamental C++ programming concepts and idioms
  • be able to properly design classes and class interfaces
  • know about the importance of exception safe programming
  • have gained insight into kernel development with C++
  • avoid the usual pitfalls in the context of inheritance
  • comprehend the advantages of non-intrusive design
  • understand the virtue of clean code

Agenda:

1st day schedule (9:00 - 17:30)

Essential Object-Oriented Design Principles

  • The core of object-oriented programming
  • The SOLID principles

Concepts and the STL

  • Overview of the STL
  • Proper use of the STL

2nd day schedule (9:00 - 17:30)

Class Design

  • Proper Handling of Member Data
  • Proper Interface Design
  • Compiler Generated Functions
  • Move Semantics
  • Proper Design of Polymorphic Interfaces
  • Const Correctness
  • Visibility vs. Accessibility

3rd day schedule (9:00 - 17:30)

Robust Code

  • Error Propagation
  • Exception Safety
  • RAII
  • Handling Legacy Code

Proper Use of Dynamic Polymorphism

  • Non-public Inheritance
  • Public Inheritance

Dependency Breaking Techniques

  • Breaking Include Dependencies
  • Classical Design Patterns Revisited

4th day schedule (9:00 - 16:30)

  • Non-Intrusive Design

Kernel development with C++

  • Choice of the proper data structures
  • Loop unrolling
  • Blocking
  • SIMD vectorization
Letzte Änderung: 11.04.2022