Course Outline
Module 1 (C++ Phase 1)
- Introduction and references.
- Basics.
- Workshop basics.
- Overloading.
- What can be overloaded and how.
- Additional C++ types (bool and reference).
- Workshop on overloading.
- Object-Oriented Programming (OOP).
- Quick introduction to OOP.
- Classes.
- Structs.
- Access modifiers.
- Constructors.
- Default and deleted functions.
- Initialiser syntax and constructor initialisation list.
- Workshop on classes.
- Memory.
- Classical memory interaction.
- Workshop on memory.
Module 2
- Introduction to quantitative finance.
- Discrete time models.
- Continuous time models.
- Interest rate models.
- Options on bonds.
- Short rate models.
- Forward rate models.
- Market models.
Module 3 (C++ Phase 2 and Quantitative final phase)
- Inheritance.
- Construction.
- Polymorphism.
- Virtual, pure virtual, abstract and interface.
- Access modifiers.
- Workshop on inheritance (shapes).
- Exceptions.
- What they are.
- How they work.
- What to throw and what to catch.
- Workshop on exceptions.
- Memory exhaustion.
- How it is notified.
- How to handle it.
- Modern memory management.
- RAII.
- Templates applied to modern memory management (SmartPointers).
- Standardised C++11 SmartPointers.
- nullptr.
- Workshop on SmartPointers.
- Namespaces.
- Workshop on namespaces.
- Vasicek bond pricing in C++.
- Black–Scholes modelling in C++: puts and calls.
- Introduction to Monte Carlo simulation.
- How to price options using simulation.
- Monte Carlo simulation in C++.
- Geometric Brownian motion.
- American vs European options.
- Slice-based valuation: lattice method.
- Slice-based valuation: PDE method.
- Slice-based valuation: PDE method.
- Valuation of American (predetermined dates) Bermudan options.
Module 4 – C++ Final phase
- auto.
- The new auto keyword.
- The new auto return syntax.
- enum.
- New-style enums.
- constexpr.
- New constant expressions.
- About constness.
- const and mutable explained.
- Lambdas and function objects.
- Classes that act like functions.
- Introduction to lambda functions.
- chrono.
- An introduction to the new chrono library.
Module 5
- Casting.
- Standard library.
- string.
- Containers.
- vector (vs).
- list.
- map.
- array.
- tuple.
- Initialiser lists.
- Iterators.
- range-for syntax.
- std algorithms.
- Streams.
- Miscellaneous keywords.
- static.
- explicit.
Module 6
- Move semantics.
- Introduction to l-values and r-values.
- R-value references applied to move semantics.
- Type traits.
- Obtaining information at compile time.
- Concurrency.
- Introduction to C++11 threading, async/future and atomic types implementation.
- Variadic templates – an introduction to C++11 variadic templates.
Requirements
General programming knowledge.
Testimonials (3)
Detailed explanation, re-iteration of points in a quite subtle way that really drove the knowledge home very well. Rod's willingness to double-check the odd obscure question that we rasied, to be sure that his answers were 100% right. Also, his interest in discussing the pros & cons of alternate coding styles so that we learnt not only how to use C++ in our intended way, but why it should be done that way.
Nick Dillon - cellxica Ltd
Course - Using C++ in Embedded Systems - Applying C++11/C++14
Experience sharing, it's teacher's know-how and valuable.
Carey Fan - Logitech
Course - C/C++ Secure Coding
The online-ness of it meant that we could save a lot of time. Much appreciated. Also, the fact that the trainer knew both c# and Cpp was a huge help since he could explain everything through knowledge we already possessed.