Course Outline
Module 1 (C++ Phase 1)
- Introduction + References
- Fundamentals
- Workshop: Fundamentals
- Function Overloading
- Understanding Overloadable Entities and Techniques
- Additional C++ Types (bool & reference)
- Workshop: Function Overloading
- Object-Oriented Programming (OOP)
- Quick Overview of OOP
- Classes
- Structures
- Access Modifiers
- Constructors
- Default and Deleted Functions
- Initializer Syntax and Constructor Initialization Lists
- Workshop: Classes
- Memory Management
- Traditional Memory Interaction
- Workshop: Memory
Module 2
- Introduction to Quantitative Finance
- Discrete Time Models
- Continuous Time Models
- Interest Rate Models
- Bond Options
- Short Rate Models
- Forward Rate Models
- Market Models
Module 3 (C++ Phase 2 & Quantitative Final Phase)
- Inheritance
- Construction in Inheritance
- Polymorphism
- Virtual, Pure Virtual, Abstract, and Interface
- Access Modifiers
- Workshop: Inheritance (Shapes)
- Exceptions
- Understanding Exceptions
- Exception Handling Mechanisms
- What to Throw and What to Catch
- Workshop: Exceptions
- Memory Exhaustion
- Notification of Memory Exhaustion
- Handling Strategies
- Modern Memory Management
- RAII (Resource Acquisition Is Initialization)
- Templates in Modern Memory Management (SmartPointers)
- Standard C++11 SmartPointers
- nullptr
- Workshop: SmartPointers
- Namespaces
- Workshop: Namespaces
- 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
- Slice-Based Valuation: Lattice Method
- Slice-Based Valuation: PDE Method
- Slice-Based Valuation: PDE Method
- Valuation of American (Pre-determined Dates) Bermudan Options
Module 4 - C++ Final Phase
- auto
- The New auto Keyword
- New auto Return Syntax
- enum
- New Style Enums
- constexpr
- New Constant Expressions
- Understanding Constness
- Explaining const and Mutable
- Lambdas and Function Objects
- Classes Acting as Functions
- Introduction to Lambda Functions
- Chrono
- 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
- Standard 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 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.