Basic C++ Course:
-
Introduction to basic language syntax – types, arrays, values, functions & overloads.
-
Introduction to tooling, development environments and compilation process.
-
Introduction to pointers and references.
-
Module test.
-
Introduction to custom types – structs/enums/unions, constructors, destructor and member functions.
-
Introduction to basic standard library containers – brief info on template usage.
-
How not to write C++ – critical bugs, gotchas and pitfalls.
-
Module Test.
-
Practical Exam – Final Grade.
Intermediate C++ Course:
-
OOP – inheritance, multiple inheritance, pure virtual, virtual destructor.
-
Introduction to copy & move semantics.
-
Introduction to common use-case operator overloading – equality, assignment, arithmetic.
-
Introduction to object lifetime and allocation types (automatic, static, dynamic, etc)
-
Introduction to exceptions.
-
Introduction to writing templated code.
-
Introduction to smart pointers.
-
Intermediate STL containers & computational complexity.
-
Final Project.
Advanced C++ Course:
-
Value categories – lvalues, xvalues, prvalues & ref qualifiers.
-
Advanced templating – SFINAE, parameter packs, perfect forwarding.
-
Compile-time programming – constexpr and template metaprogramming.
-
Advanced operator overloading and lambdas.
-
Paradigms for scalable, robust software engineering – TDD/BDD, state-of-the-art
-
frameworks and design.
-
Multithreading, thread safety, atomic types, mutexes, async, promises and futures.
-
Modern/Advanced STL library usage (algorithm, chrono, random, etc)
-
C++17 language features crash course.