Course Outline
Module 1 (C++ Phase 1)
- Introduction and References
- Core Basics
- Basics Workshop
- Function Overloading
- Understanding Overloading: Capabilities and Implementation
- Additional C++ Types (bool and Reference)
- Overloading Workshop
- Object-Oriented Programming (OOP)
- Quick Introduction to OOP
- Classes
- Structs
- Access Modifiers
- Constructors
- Default and Deleted Functions
- Initializer Syntax and Constructor Initialization Lists
- Classes Workshop
- Memory Management
- Classical Memory Interaction
- Memory Workshop
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 & Quantitative Final Phase)
- Inheritance
- Construction
- Polymorphism
- Virtual, Pure Virtual, Abstract Classes, and Interfaces
- Access Modifiers
- Inheritance Workshop (Shapes)
- Exceptions
- Understanding Exceptions
- Exception Mechanics
- Guidelines for Throwing and Catching
- Exceptions Workshop
- Memory Exhaustion
- Notification Mechanisms
- Handling Strategies
- Modern Memory Management
- RAII (Resource Acquisition Is Initialization)
- Applying Templates to Modern Memory Management (SmartPointers)
- Standardized C++11 SmartPointers
- nullptr
- SmartPointers Workshop
- Namespaces
- Namespaces Workshop
- Vasicek Bond Prices in C++
- Black-Scholes Modeling in C++ for Put & Call Options
- Introduction to Monte Carlo Simulation
- Pricing Options via Simulation
- Monte Carlo Simulation in C++
- Geometric Brownian Motion
- American vs. European Options
- Valuation via Slicing: Lattice Method
- Valuation via Slicing: PDE Method
- Valuation via Slicing: PDE Method (Reinforcement)
- Valuation of Bermudan Options with Pre-determined Dates
Module 4 - C++ Final Phase
- auto Keyword
- New Auto Keyword Usage
- Auto Return Syntax
- Enum Types
- Strongly Typed Enums
- constexpr
- New Constant Expressions
- Understanding Constness
- Const and Mutable Explained
- Lambdas and Function Objects
- Classes Behaving as Functions
- Introduction to Lambda Functions
- Chrono Library
- Introduction to the New Chrono Library
Module 5
- Casting Techniques
- Standard Library Overview
- String Manipulation
- Containers
- Vector (std::vector)
- List
- Map
- Array
- Tuple
- Initializer Lists
- Iterators
- Range-based For Syntax
- Standard Library 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
- Gathering Compile-Time Information
- Concurrency
- Introduction to C++11 Threading, async/future, and Atomic Types
- Variadic Templates: Introduction to C++11's 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.