I offer corporate training in the modern C++ programming language. Email me today to get started!
Why train my team?
-
Orienting new hires. Communal team training gets everyone on the same page. You won’t discover six months in that two of your new hires don’t know what smart pointers are, or how
string
differs fromstring_view
, or how comparison operators work in C++20. -
Upgrading your codebase. The C++ standard expands every three years. While compiler support does trail the paper standard, it’s generally expected that your codebase will move from C++17 to C++20 to C++23. A trainer’s expertise helps you make feature decisions — where and how do we use
auto
? Ranges? Modules? — and avoid pitfalls. -
Crash courses. Your team knows C++17 inside and out. But you’ve decided your next codebase will go all in on C++20 Concepts and Ranges. Focused, trustworthy training with an expert can do in days what would take weeks given only StackOverflow and ChatGPT.
Format
My typical training is arranged as a 16-hour or 20-hour (four- or five-half-day) course which alternates PowerPoint lectures with hands-on C++ coding exercises. Each lab exercise requires writing and compiling actual C++ code, and reinforces the material learned in the preceding lecture.
This can be done on-site, or online (e.g. via Zoom or Teams); in fact online is easier. If you’re looking for on-site training, be aware that I’m geographically located in the New York City area.
Permission to record the training, and keep the recording for up to (3–6–12) months, can be granted.
Quotes from satisfied clients
Arthur has been our first instructor that is intimately familiar with both the core language and standard library. His passion for C++ makes it easy for me to stay focused on the material being presented.
His presentation of the slides was at the right level of abstraction for me. The labs were well thought out and at the right level of complexity.
Arthur was well prepared and knowledgeable, but approachable. He presents, communicates, and interacts well. It was really a great experience.
Pricing
Contact me for a quote.
Sample course outlines
Fundamentals of C++ — This “package course” is suitable for anyone experienced
in an imperative programming language such as Python or JavaScript, as well as anyone
who wants a coherent overview of C++ from the ground up. The eight labs build on each
other, starting with a simple string reversal using char*
and culminating in a
classically polymorphic class hierarchy managed with smart pointers.
- Parameter-passing, pointers and references,
const
- Separate compilation, namespaces,
inline
- Arrays,
sizeof
, function overloading - Function templates, iterators,
vector
- Lambdas, erase-remove idiom
new
/delete
, special members, RAII, exceptionsunique_ptr
andmake_unique
- Move semantics
- More STL containers:
multiset
, comparators,pair
- Inheritance, polymorphism, virtual dispatch,
dynamic_cast
Intermediate C++ — Collaborate to tailor a custom intermediate-level course from topic-based units, each approximately two hours in length. Units appropriate for an intermediate course include:
- New-in-C++11 must-haves such as
auto
,nullptr
, andstatic_assert
decltype
and<type_traits>
- Templates, explicit specialization, and partial specialization
- Deep dive on lambdas
enum
andunion
- Deep dive on smart pointers (
unique_ptr
andshared_ptr
) - Deep dive on the STL iterator model
- Deep dive on the STL container zoo and iterator invalidation
- Unordered associative containers and
hash
- Move semantics and rvalue references
- Forwarding references, perfect forwarding, and variadic templates
string_view
- Name lookup, ADL, and the hidden friend idiom
- C++20
requires
-clauses and concepts
Advanced C++ — Units appropriate for an advanced-level course include:
- Deep dive on
optional
,variant
,tuple
, andexpected
- Type erasure:
function
andany
- Using “triviality” for optimization
- Interfacing with C
- Deep dive on macros and the C preprocessor
- Metaprogramming with
if constexpr
, tag dispatch, and SFINAE - Compile-time programming with
constexpr
andconsteval
- C++20 comparisons and
operator<=>
- C++20
std::format
- Introduction to C++20 Ranges
- The
std::views
zoo - C++23 explicit object parameter syntax and “deducing
this
”
Don’t see what you need? — Just let me know; I may be able to do it!
Contact Me
Email me at arthur.j.odwyer@gmail.com to get started. I recommend your subject line include the phrase “C++ training.”