Course Outline
Module 1 (C++ Phase 1)
- Introduction and References
- Fundamentals
- Basics Workshop
- Function Overloading
- Identifying and Implementing Overloads
- Additional C++ Types (bool & reference)
- Overloading Workshop
- Object-Oriented Programming (OOP)
- Quick Introduction to OOP
- Classes
- Structs
- Access Modifiers
- Constructors
- default / delete Functions
- Initializer Syntax and Constructor Initialization Lists
- Classes Workshop
- Memory Management
- Traditional 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, and Interface Classes
- Access Modifiers
- Inheritance Workshop (Shapes)
- Exceptions
- Understanding Exceptions
- Mechanics of Exception Handling
- Guidelines for Throwing and Catching Exceptions
- Exceptions Workshop
- Memory Exhaustion
- Notification Mechanisms
- Handling Strategies
- Modern Memory Management
- RAII (Resource Acquisition Is Initialization)
- Templates Applied to Modern Memory Management (Smart Pointers)
- Standardized C++11 Smart Pointers
- nullptr
- Smart Pointers Workshop
- Namespaces
- Namespaces Workshop
- Implementing Vasicek Bond Prices in C++
- Black-Scholes Modeling in C++ (Put & Call Options)
- Introduction to Monte Carlo Simulation
- Option Pricing 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 (Dates Predetermined) 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
- Understanding Constness
- Explaining Const and Mutable
- Lambdas and Function Objects
- Classes Acting as Functions
- Introduction to Lambda Functions
- Chrono Library
- 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
- Gaining 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.