2020-11-18 ONLINE: Modern C++ Software Design

Date:Wednesday, November 18 - Friday, November 20, 2020,  10:00 - 17:00
Location:Online Course
Contents: "There is no point in developing software unless you care about it doing it well." (Andrew Hunt, David Thomas: The Pragmatic Programmer)
This advanced C++ online 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. 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, and maintainable C++ code. The following topics will be covered: 

Day 1 schedule:
  • Concepts and the STL
  • Overview of the STL
  • Proper use of the STL
    • Proper use of algorithms
    • Proper use of containers
Day 2 schedule:
  • Class Design
  • Compiler Generated Functions
  • Move Semantics
  • Return Values and Parameters
  • Member Data
  • Member Functions
  • Visibility vs. Accessibility
Day 3 schedule:
  • Robust Code
  • Object Lifetimes
  • RAII
  • Proper Use of Dynamic Polymorphism
  • Motivation
  • Classical Design Patterns Revisited
  • Public Inheritance
  • Surprises in Object Hierarchies


Contents are subject to modifications.


Prices

  • Students without Diploma/Master: 30 EUR
  • Students with Diploma/Master (PhD students) at German universities: 60 EUR
  • Members of German universities and public research institutes: 60 EUR
  • Members of universities and public research institutes within EU or PRACE member countries: 120 EUR
  • Members of other universities and public research institutes: 240 EUR
  • Others: 600 EUR

Registration

Please register with your official e-mail address to prove your affiliation. Following your successful registration, you will receive an invoice approx. 2 weeks before the course. After paying the invoice, you will not receive a receipt. If you require proof of payment (e.g., for reimbursement) please use a copy of the invoice together with your bank statement indicating the payment.

Withdrawal Policy

See Withdrawal

Controller

Controller for the purposes of the General Data Protection Regulation (GDPR), other data protection laws applicable in Member states of the European Union and other provisions related to data protection is:

Leibniz Supercomputing Centre of the Bavarian Academy of Sciences and Humanities
Boltzmannstraße 1
D-85748 Garching near Munich
Germany

Tel. 089-35831-8000
E-Mail: leitung@lrz.de

Contact information of the data protection officer

insidas GmbH & Co. KG
Wallerstraße 2
84032 Altdorf
Deutschland

E-Mail: datenschutz@lrz.de

Purpose of the data processing and data categories

When you register for our event, we collect the following data:

  • Title
  • First Name
  • Family name
  • Institution
  • Address (Street, PLZ, City, Country)
  • E-Mail
  • Nationality

The legal basis for this processing is Art. 6 (1) (b) GDPR (“processing is necessary for the performance of a contract).

  • Phone

The legal basis for this processing is Art. 6 (1) (a) GDPR (“consent”)

Recipients of the personal data

For registration we use the service of Partnership for Advanced Computing in Europe AISBL (“PRACE”) (https://events.prace-ri.eu).

Your rights

You are entitled to the rights set out in Art. 15-21 GDPR. If you wish to exercise any of these rights, please use the contact information above.

Gained Skills: After this course, participants ...
  • ... will have a detailed understanding of the essential OO design principles
  • ... will have gained knowledge about fundamental C++ programming concepts and idioms
  • ... will be able to properly design classes and class interfaces
  • ... will know about the importance of exception safe programming
  • ... will avoid the usual pitfalls in the context of inheritance
  • ... will comprehend the advantages of non-intrusive design
  • ... will understand the virtue of clean code
Prerequisites:
  • Course participants should have basic UNIX/Linux knowledge (login with secure shell, shell commands, simple scripts, editor vi or emacs). Solid base on C++ and at least one year of experience with the language is needed.
  • Participants are expected to use their own machines. Any operating system (Windows, Linux, MacOS, ...), any IDE/editor (MS Visual Studio, CLion, vi, emacs, ...) and any compiler capable of at least C++14 (GCC, Clang, MSVC, ...) can be used. Alternatively it is possible to use a C++ online compiler (e.g. cpp.sh, wandbox.orgrepl.it). The programming tasks, including both Makefiles and CMake files, will be distributed before the course. 

Language:English
Teacher:Klaus Iglberger (External)
Assitants:Carmen Navarrete (LRZ), Martin Ohlerich (LRZ)
Registration:Via https://events.prace-ri.eu/event/1077/registrations/778/