Advanced Knowledge of C++ Basics [2023 class archive]

Advanced Knowledge of C++ Basics is a two-day onsite training course with programming examples, taught by Mateusz Pusz. It is offered at the Gaylord Rockies from 09:00 to 17:00 Aurora time (MDT), on Saturday and Sunday, September 30th and October 1st, 2023 (immediately prior to the conference). Lunch is included.

Course Description

C++ is a complex and complicated programming language. When used correctly, it delivers the best possible performance. Unfortunately, it is often misused, which is a source of many problems.

However, it turns out that in the case of conscious usage of selected language features, it can be relatively easy to produce high-quality software that delivers excellent runtime performance and is error-proof. Such a coding style is called Modern C++.

The material of this workshop is the first chapter of the trainer’s most successful and popular training called “Advanced Modern C++”. During the class, we will go through all the key features of the C++ language, discuss potential issues and pitfalls, and provide guidelines on how to use them correctly. This training discusses various topics ranging from identifiers that do not result in undefined behavior; through vital language features like name lookup, overload resolution, one definition rule, and move semantics; up to the design recommendations like Rule of Zero. Among others, we will see how we can provide a custom dynamic allocation strategy for our programs and how we should design and implement customization points for our engine.

The training targets developers with some professional experience with C++ programming language and who realize the problems caused by careless ways of coding in this language. The workshop aims to strengthen the knowledge of the C++ core language and show how to avoid many problems that often appear in the production code.

If you are wondering if you should attend this class, maybe this short quiz will help you decide. Those and many other questions will be addressed during the training.

Training Highlights

  • Emphasis on understanding the philosophy and mechanisms of C++ programming language and learning how to reuse this knowledge in your own code
  • Particular focus on the usage of C++ templates in practical tasks
  • Development of error-proof code
  • Selection of useful patterns and techniques that prove in a demanding production code

Workshop Structure

  • lecture 40%
  • discussion 30%
  • hands-on coding 20%
  • knowledge quiz 10%

Prerequisites

During the workshop, we will work with the latest version of the compiler thanks to the Compiler Explorer, so no special environment preparation is needed.

Course Topics

  • Identifiers and naming conventions
  • Namespaces
  • C++ Types and their properties
  • Value vs reference semantics
  • Pointers vs references
  • Unscoped vs scoped enumerations
  • Classes and friends
  • Special Member Functions
  • Rule of Three, Five, and Zero
  • Move semantics
  • Value categories
  • Automatic type deduction
  • Type conversions
  • Objects
  • Alignment
  • Scope
  • Lifetime
  • ODR and inline
  • Storage duration
  • Stack vs Heap vs Free Store
  • Initialization
  • Name Lookup
  • Overload Resolution
  • Customization points
  • Range-based for loop

Register Here

Course Instructor

Mateusz Pusz

Mateusz Pusz is a software architect, principal engineer, and security champion with more than 15 years of experience in designing, writing and maintaining C++ code for fun and living. C++ consultant, trainer, conference speaker, and evangelist focused on Modern C++. His main areas of interest and expertise are code performance, low latency, stability, and security.

Mateusz worked at Intel for 13 years, and now he is a Principal Software Engineer and the head of the C++ Competency Center at EPAM Systems. He is also a founder of Train IT that provides dedicated C++ trainings and consultant services to corporations around the world.

Mateusz is a contributor and an active voting member of the ISO C++ Committee (WG21) where, together with the best C++ experts in the world, he shapes the future of the C++ language. He is also a co-chair of WG21 Study Group 14 (SG14) responsible for driving performance and low latency subjects in the Committee. In 2013 Mateusz won “Bench Games 2013” – worldwide competition in the C++ language knowledge.