Course Outline
Module 1 (C++ Phase 1)
- Introduction and References
- Fundamentals
- Basics Workshop
- Function Overloading
- Understanding what can be overloaded and how to do it
- Additional C++ Types (bool and references)
- Overloading Workshop
- Object-Oriented Programming (OOP)
- Quick Introduction to OOP
- Classes
- Structs
- Access Modifiers
- Constructors
- Default and Deleted Functions
- Initializer Syntax and Constructor Initialization List
- 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 in Inheritance
- Polymorphism
- Virtual, Pure Virtual, Abstract, and Interface Classes
- Access Modifiers
- Workshop: Inheritance (Shapes)
- Exceptions
- Understanding Exceptions
- Mechanics of Exception Handling
- Guidelines for Throwing and Catching
- 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
- Vasicek Bond Prices in C++
- Black-Scholes Modeling in C++ (Put & Call Options)
- Introduction to Monte Carlo Simulation
- Methodology for 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
- Valuation of American (Dates Predetermined) Bermudan Options
Module 4 - C++ Final Phase
- auto Keyword
- The New auto Keyword
- New auto Return Syntax
- Enums
- New Style Enums
- constexpr
- New Constant Expressions
- Understanding Constness
- Explanation of Const and Mutable
- Lambdas and Function Objects
- Classes Behaving Like Functions
- Introduction to Lambda Functions
- Chrono Library
- Introduction to the New Chrono Library
Module 5
- Casting Techniques
- Standard Library Overview
- String Class
- Containers
- Vector (vs)
- List
- Map
- Array
- Tuple
- Initializer Lists
- Iterators
- Range-based For Syntax
- STL 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’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.