Learn advanced object programming paradigms in C++ variants 11, 14, and 17, using AI to rapidly generate common idioms and decode complex template metaprogramming.
This course teaches you how to use the advanced object programming paradigms in C++ variants 11, 14, and 17. The course builds on basic C++ knowledge that enables you to utilize constructs such as move semantics, lambdas, templates, etc. in their C++ software solutions. Thanks to these high-level OOP concepts, C++ is great to model complex systems, such as autonomous driving systems in vehicles. This course teaches you how to integrate AI tools to help generate simpler, idiomatic language constructs (like lambdas, move constructors, and thread initialization) and to recognize common C++-specific memory and concurrency problems. Furthermore, you will learn how to leverage AI to deeply understand and write complex generic programming concepts, including variadic templates and template specializations.
Course topics:
- C++ language extensions (C++11, C++14, C++17), nullptr, auto, scoped enumerations, compile-time assertions, string literals
- C++ better class design: override, final, implicitly-declared operations, =delete, =default, delegating constructors, explicit, user-defined literals (UDL)
- Move semantics: move constructor, move assignment, the rule of five, rvalue references, perfect forwarding, forwarding references. Using AI to safely generate boilerplate move semantics.
- Lambdas: function objects, lambda expressions, variable capturing, generic lambdas, return type deduction, usage with STL algorithms. Prompting AI to write idiomatic lambda expressions.
- Multithreading: threads, passing parameters to threads, thread joining, mutexes, locking, condition variables, semaphores. AI-assisted detection of concurrency bugs.
- Templates: function templates, variadic templates, tuples, template specializations, type traits, if constexpr. Utilizing AI as a tutor to comprehend and write complex template metaprogramming.
Requirements
Software: IDE with C++ compiler (e.g Visual Studio Code, CMake, and C++ compiler supporting C++11 dialect or later, such as clang, g++ etc.), Chrome browser, and access to modern AI tools (e.g., ChatGPT, Copilot).
Hardware: Computer with an Internet connection, working speakers, and microphone.
Prior knowledge: Participants should have basic knowledge of programming in C++.
