C++ Practical courses

Gothaer Tu kaiserslautern Freelance de logo 1 Train Transfer Bayerische Oberlandbahn Hochschule der Medien Gore 2000px TÜ V Süd Logo

CUSTOMIZED C++ TRAINING

Does your team regularly work with the C++ programming language? If so, we have just the thing for you! Customized training courses are also available for C++ users and programmers. Get the most out of your projects. Thanks to individual modules, your development team can receive personalized training.

We are sure to find the optimal combination for your team's needs. Bring all your questions. We are happy to take the time to advise you individually.

All courses live

In the Academy or online

Your Team Benefits at a Glance

  • Customized Topics

  • Flexible Dates and Training Formats

  • Experienced Trainers

  • Certificate for Active Participation

  • Learning Material

  • Practice-oriented, Compact and Lively

C++ topics and modules

Just to clarify upfront: Any topic can be explored in depth at your request. Your needs come first. You decide what your team needs. We create the concept. If your team just wants an overview, then you can select a wide range of topics. However, it will likely be challenging for the team to implement what they have learned in practice afterwards.

So, if you want to work seriously and professionally with C++, it's better, based on our experience, to select fewer topics which we then discuss in depth during the training and conduct a sufficient number of practical workshops. Here, indeed, "less is more". In a consultation, we can best jointly identify which topics will be most beneficial for your team and your projects.

We don't preach theory, we solve problems! Get the maximum knowledge for your team. Compile the topics according to your previous knowledge and needs, depending on the project. Because individual learning brings the desired success!

C++ Basics

These topics form the foundation of C++. Anyone working with C++ needs to master the content of these modules, regardless of how complex the programs you are working on are.

The C++ Basics module includes the following focus areas:

  • Data types and operations
  • Variables and initialization
  • Value semantics, construction, destruction
  • Pointers, references, smart pointers, RAII
  • Functions and control flow
  • Overview of basic data structures in C++: string, vector, map
  • Development environments and build systems for C++
  • Polymorphy and Interfaces

Intermediate and Advanced Topics

C++ is an enormously powerful language that offers numerous advanced features. The following modules are only a small selection of these; we can discuss which topics are particularly relevant to you in a personal meeting.

The C++ Intermediate and Advanced module includes the following focus areas:

  • Lambdas and function objects
  • Move semantics, rvalue references, and move
  • Allocators, polymorphic memory resources (PMR)
  • Concurrent programming (threads, atomic operations, futures)
  • Performance-optimization
  • Networking in C++
  • Database in C++

The C++ Standard Library

C++ offers a rich library of data types, algorithms, and other functionality. Due to the widespread use of templates, the standard library can often work very efficiently, but this also means that some pitfalls lurk for the programmer. In these modules, we show how your team can get the maximum benefit from the standard library.

The C++ Standard Library module includes the following focus areas:

  • Strings
  • Input/Output
  • Memory Management (unique_ptr, shared_ptr)
  • STL Containers: (array, vector, deque, list, map, set und unordered_*-Varianten)
  • Iterators
  • Algorithms
  • Ranges
  • Utilities: (pair, tuple, optional, variant, move)

Templates and compile-time programming

One of the special features of C++ is the ability to perform compile-time calculations and thus generate highly efficient code. Traditionally, templates and template metaprogramming were the means of choice for this. Often one had to apply the so-called SFINAE rule (Substitution Failure is Not An Error), which often leads to code that is difficult to read. However, in more recent C++ standards, features for compile-time calculations that are not based on templates have been introduced as well as the capabilities of templates have been extended with so-called concepts and constraints.

The C++ Templates and compile-time programming module includes the following focus areas:

  • Using and writing templates
  • Compile-time evaluation of code: constexpr, consteval, and constinit
  • Type traits
  • Concepts and constraints
  • Classical template metaprogramming: SFINAE and the consequences

Error handling in C++

There are more practically relevant options for handling exceptional situations in C++ than in most other programming languages: While C++ offers a powerful exception mechanism, it cannot be used in many situations: whether safety-critical software, real-time applications, or libraries that are to be integrated into other languages, in many cases one must resort to another error handling strategy.

The Error handling in C++ module includes the following focus areas:

  • Possibilities of error handling in C++, advantages and disadvantages
  • Exception handling (try-catch)
  • Basic, strong and no-fail exception guarantees.
  • Writing exception-safe code: RAII, Rule of Zero, ...
  • Other possibilities of error handling (C-compatible, Boost-LEAF, ...)

Effektive C++: Clean Code & Clean Unit Test in C++

The modules in this topic do not deal primarily with individual language features of C++ but with the question: How do I use the features of C++ to write program code that has as few errors as possible and is easy to understand, change and extend. The modules in this section are mainly limited to relatively "local" program components like single functions and classes.

Of course, we also go into how to use the relevant language constructs well in the modules that introduce them; the modules in this section delve further into the techniques and also cover aspects that there is no time for in a typical basic or advanced C++ course.

Agile Programming: Agile techniques help to keep "technical debt" low and to keep the software flexible enough to allow the incorporation of new features throughout the life of the project.

The Clean Code / Clean Unit Test in C++ module includes the following focus areas:

  • Tools for improving code quality (linter, static analysis)
  • Clean Code: Names, comments, functions
  • Member functions vs. free-standing functions
  • Testen with Catch2
  • Test-first Development Techniken
  • Test Driven Development (TDD)
  • Behavior Driven Development (BDD)
  • Executable Specifications (cucumber/behave).
  • Test Double und Mocking Frameworks
  • Refactoring Patterns und Best Practice in C++

Object Orientation, Design and Architecture

These modules cover the full spectrum of object-oriented programming and show how your team can use a variety of techniques and patterns to better structure programs. Both the fundamentals of object orientation, which are independent of any particular programming language, and many of the unique features of C++, which often go far beyond what other programming languages offer, are discussed here.

The Object Orientation / Clean Design and Architecture in C++ module includes the following focus areas:

  • Basic concepts of object orientation
  • Classes and structs
  • Inheritance, abstract classes, and interfaces
  • Virtual inheritance and multiple inheritance
  • Practice-relevant software architecture
  • Design patterns in C++
  • Designing, structuring, and implementing large projects:
  • SOLID
  • GRASP
  • Architecture styles, hexagonal architecture

Working with legacy code in C++

Every programmer likes to work on modern, well-structured code that is thoroughly documented and tested. Unfortunately, the practice often looks different. If your team has to maintain a codebase characterized by structural issues, insufficient documentation, and no or poor testing, then unfortunately we can't promise you that any of our courses will solve the problem overnight. But in these modules, your team will learn many proven techniques that they can use step by step to get their code into a shape that makes it fun to work with again

The Working with legacy code in C++ module includes the following focus areas:

  • Safeguarding tests
  • Incremental improvement of code and tests
  • Seams and their special features in C++
  • Refactoring patterns for legacy code

Working effectively as a team

These modules cover techniques that help make teamwork more productive and improve the quality of the resulting software.

The Working effectively as a team module includes the following focus areas:

  • Version control (Git)
  • Docker
  • Continuous Integration (CI)
  • Workflows: Issue Tracking, Pull/Merge Requests
  • Example: working with a local GitLab instance in Docker
  • Kubernetes
  • Elasticsearch/Kibana (OpenSearch/Dashboards)

Examples: Customized C++ courses

These examples illustrate how some courses can be structured for typical customer requirements.

Example 1: Introduction to modern C++

You are starting a C++ project, but some of the team members have knowledge of Java or C#, but not C++. To get these team members to a level where they could productively work on the code base, a course with the following modules would be appropriate:

  • Data types and operations

  • Variables and initialization
  • Value semantics, construction, destruction
  • Pointers, references, smart pointers, RAII
  • Functions and control flow
  • Overview of basic data structures in C++: string, vector, map
  • Development environments and build systems for C++
  • IDEs and Build-Systems for C++
  • Strings
  • Memory Management (unique_ptr, shared_ptr)
  • STL Containers: (array, vector)

Example 2: Object-oriented software architecture in C++

You are a team of experienced developers for whom neither the C++ programming language itself nor the basics of object orientation are new territory. But you want to better structure the large software project you are currently working on and prepare it for future requirements. Then the following modules might be right for you:

  • Practice-relevant software architecture
  • Design patterns in C++
  • Designing, structuring, and implementing large projects:
  • SOLID
  • GRASP
  • Architectural styles, hexagonal architecture

Your Trainers

Dr. Matthias Hölzl
Dr. Matthias Hölzl

Expert: Python, C++, Clean Code, Unit Test, Clean Design

Dr. Max Meier
Dr. Max Meier

Expert: .NET/C#, Software Architecture, Microservice

Dr. Stefan Behnel
Dr. Stefan Behnel

Expert: Python, Pytest, Clean Code, Fast Python, Cython

Questions and answers about C++ training

What course formats are available?

3-day on-site course at the Coding Academy

The course takes place in our modern and top-equipped training rooms. We provide each participant with a modern laptop during the training. Drinks are provided by the Coding Academy. You will receive access to the materials no later than the first day of the course.

3-day in-house training on-site at your location

Our trainers are also happy to come to you if this is expressly desired by you and you have a good training room and the necessary infrastructure for the training.

3-day online course

The course takes place online. All you need is a computer with internet access; however, for some courses, it may be necessary to install the software used; this is indicated in the description of the respective course. You will receive access to the materials no later than the first day of the course.

4-Week Training Program

A new and innovative learning concept. You can find more information about the 4-Week Training Programm here.

What is the formal process (ordering, training, invoice)?

  • If you are interested in a training course, it is best to contact us so that we can clarify the technical topics.
  • If you would like to take the training course with us, we will be happy to send you a non-binding offer.
  • If the offer suits you, please accept it (a short confirmation by email is sufficient).
  • If you need an order confirmation, we will be happy to send it to you.
  • Afterwards, we will find a date that fits well for your team.
  • For online training, we will provide you with the link: MS-Teams, BBBServer, or Zoom.
  • A few days after the training, you will receive an invoice with a payment term of two weeks.
  • Upon active participation in the training, participants will receive their certificates by email afterwards.

Do graduates of the C++ courses receive a certificate?

Of course, as a participant in a C++ course, you will receive a certificate. The prerequisite for this is full participation in all course units and programming tasks, and the successful programming of a small final project. However, after an intensive C++ course, this will certainly bring you more joy than stress.

What distinguishes courses at the Coding Academy?

  • Individual: We specifically address your needs and take into account your previous knowledge, desired topics, and focus areas.
  • Developed by experts using the RAED teaching method®
  • Compact, lively, and entertaining
  • Structured and easy to understand
  • A lot of practice: You can immediately apply the knowledge learned in the course.
  • Theory optimized to the essentials
  • Many examples and tasks, the difficulty of which increases linearly
  • Small groups: max. 8 participants in the 3-day course; max. 15 participants in online coaching
  • Highly qualified trainers with up to 30 years of experience in industry and teaching at German universities and colleges
  • For on-site trainings, we provide modern laptops to the participants at no additional cost.

Customer testimonials

We thank our customers for their trust.

When our employees ask me about training courses in the field of coding and clean code, there is now only one contact name and that is of course you: the Munich Coding Academy! In your courses you have scored with a super performance and great communication, our employees are happy and learn a lot, it could not be better!

Herr Tim Stuckmann,
VW

Astrid Elbe 02 lrg web

My joint projects with the Coding Academy have been very successful and absolutely reliable. The course catalog includes the programming languages that are currently most relevant in companies. The courses on improving software quality and productivity are particularly noteworthy. I can recommend the Coding Akademie as very competent, flexible and professional.

Dr. Astrid Elbe,
Vice President Aviat Networks und ehemalige Managing Director Intel Labs Europe

NO QUESTION REMAINS UNANSWERED HERE!

We are very happy to take time for you. Use our contact form for a written contact. Our team will respond quickly and within 24 hours at the latest. In case of technical questions and to clarify the focal points, which are target-oriented for your team, please use the possibility of a non-binding consultation appointment.