Intermediate C++ with Focus on Software Engineering

This intermediate C++ training is a course on software development with the C++ programming language. The focus of the training are the essential C++ software development principles, concepts, idioms, and best practices, which enable programmers to create professional, high-quality code. The course will give insight into the different aspects of C++ (object-oriented programming, functional programming, generic programming) and will teach guidelines to develop mature, robust, maintainable, and efficient C++ code.

Since 2020 we provide two types of C++ courses, each offered two times per year:

  • intermediate: Mar. 3-6, 2020, and July 7-10, 2020 (this course)
  • advanced: May 5-8, 2020, and Nov. 24-27, 2020

with two different levels of prerequisites.

Location

Online course
Organizer: HLRS, University of Stuttgart, Germany

Start date

Jul 07, 2020
08:30

End date

Jul 10, 2020
16:30

Language

German

Entry level

Intermediate

Course subject areas

Programming Languages for Scientific Computing

Back to list

Prerequisites and content levels

Prerequisites

Prerequisites Intermediate C++ (this course):

Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). At least one year of experience with the language is needed. This includes a good understanding of the basic mechanics (header files, source files, compilation), good knowledge of the syntax of C++, and some experience with templates and inheritance.

Prerequisites Advanced C++ (other course type):

Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). At least two to three years of experience with the language is needed. This includes a solid knowledge of the syntax of C++, experience with both template-based and inheritance-based designs and some experience with design patterns.

Please choose the course that fits best to you!

Content levels
  • Beginner: 8 hours
  • Intermediate: 16 hours
  • Advanced: 3 hours

Learn more about course curricula and content levels.

Gained Skills

After this course, participants will:

  • have gained knowledge about fundamental C++ programming concepts and idioms
  • have a detailed understanding of template-based programming
  • be able to properly design classes and class interfaces
  • know about the importance of exception safe programming
  • avoid the usual pitfalls in the context of inheritance
  • comprehend the advantages of value-based design
  • understand the virtue of clean code

Program

Local registration (8:30 - 9:00)

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

  • Concepts and the STL
    • Overview of the STL
    • Proper use of the STL
    • Iterators
    • Algorithms
    • Containers
    • Allocators

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

  • C++ Templates
    • Function Templates
    • Class Templates
    • Variadic Templates
    • Template Specialization

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

  • Class Design
    • Compiler Generated Functions
    • Move Semantics
    • Proper Handling of Member Data
    • Proper Design of Member Functions
    • Strong types
    • Const Correctness
    • Visibility vs. Accessibility

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

  • Robust Code
    • Error Propagation
    • Exception Safety
    • RAII
    • Handling Legacy Code
  • Proper Use of Dynamic Polymorphism
    • The Perils of Inheritance
    • Value Semantics
    • Public Inheritance
    • Non-public Inheritance
    • Surprises in Object Hierarchies
  • Classical Design Patterns Revisited
    • Strategy
    • Visitor

Language

The course language is German. The slides are in English.

Teacher

Klaus Iglberger (External)

Handouts

Each participant will get a paper copy of all slides.

Further course material can be found here (for participants only).

Registration

Registration is now closed.

If you want a similar course in English, then please look at the 3- or 4-day advanced C++ courses at LRZ or directly on Klaus Iglberger's course page.

Deadline

for registration is June 21, 2020 (extended deadline).

Fee

Students without Diploma/Master: 35 EUR.
Students with Diploma/Master (PhD students) at German universities: 75 EUR.  
Members of German universities and public research institutes: 75 EUR.
Members of universities and public research institutes within EU or PRACE member countries: 150 EUR.   
Members of other universities and public research institutes: 300 EUR.  
Others: 780 EUR.
(includes coffee breaks)

Organization

Travel Information and Accommodation

see our How to find us page.

PRACE PATC and bwHPC-C5

HLRS is part of the Gauss Centre for Supercomputing (GCS), which is one of the six PRACE Advanced Training Centres (PATCs) that started in Feb. 2012.
HLRS is also member of the Baden-Württemberg initiative bwHPC-C5.
This course is provided within the framework of the bwHPC-C5 user support. This course is not part of the PATC curriculum and is not sponsored by the PATC program.

Contact

Andreas Ruopp phone 0711 685 87259, ruopp(at)hlrs.de
Rolf Rabenseifner phone 0711 685 65530, rabenseifner(at)hlrs.de
Lucienne Dettki phone 0711 685 63894, dettki@hlrs.de

Shortcut-URL & Course Number

http://www.hlrs.de/training/2020/CPP3