Course Outline
Module 1 (C++ Phase 1)
- Introduction and References
- Fundamentals
- Workshop Fundamentals
- Function Overloading
- What Can Be Overloaded and How
- Additional C++ Types (bool & reference)
- Workshop on Overloading
- Object-Oriented Programming (OOP)
- Quick Introduction to OOP
- Classes
- Structs
- Access Modifiers
- Constructors
- Default and Deleted Functions
- Initializer Syntax / Constructor Initialization List
- Workshop on Classes
- Memory Management
- 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 & Quantitative Final Phase)
- Inheritance
- Construction
- Polymorphism
- Virtual, Pure Virtual, Abstract, and Interfaces
- Access Modifiers
- Workshop on Inheritance (Shapes)
- Exceptions
- What Are Exceptions
- How Exceptions 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 (Resource Acquisition Is Initialization)
- Templates Applied to Modern Memory Management (SmartPointers)
- Standardized C++11 SmartPointers
- nullptr
- Workshop on SmartPointers
- Namespaces
- Workshop on Namespaces
- Vasicek Bond Prices in C++
- Black-Scholes Modeling in C++ (Put & Call)
- 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
- Initializer Lists
- Iterators
- Range-for Syntax
- Std Algorithms
- Streams
- Miscellaneous Keywords
- static
- explicit
Module 6
- Move Semantics
- Introduction to L/R Values
- R-value References Applied to Move Semantics
- Type Traits
- Obtaining Information at Compile Time
- Concurrency
- Introduction to C++11's Threading, async/future, and Atomic Types Implementation
- Variadic Templates - An 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.