Since the 2011 revision to the C++ language and standard library, the ways it is now being used are quite different. Used well, these features enable the programmer to write elegant, reusable and portable code that runs efficiently on a variety of architectures.
However it is still a very large and complex tool. This course will cover a minimal set of features to allow an experienced non-C++ programmer to get to grips with language. These include: overloading, templates, containers, iterators, lambdas and standard algorithms. It concludes with a brief discussion of modern frameworks for portable parallel performance which are commonly implemented in C++.
The course would appeal to existing C++ programmers wanting to learn techniques that are applicable to numerical computing, or C programmers who want to know what parts of the C++ standard they should prioritise when learning new features.