Course Outline
Module 1 (C++ Phase 1)
- Introduction + References
- Basics
- Workshop Basics
- Overloading
- What can be overloaded, and how.
- Additional C++ Types (bool & reference)
- Workshop Overloading
- Object-Oriented Programming (OOP)
- Quick Introduction to OOP
- Classes
- Structs
- Access Modifiers
- Constructors
- Default and Deleted Functions
- Initializer Syntax / Constructor Initialization List
- Workshop Classes
- Memory Management
- Traditional Memory Interaction
- Workshop Memory
Module 2
- Introduction to Quantitative Finance for Government
- 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 Classes, and Interfaces
- Access Modifiers in Inheritance
- Workshop on Inheritance (Shapes)
- Exceptions
- What They Are
- How They Work
- What to Throw and What to Catch
- Workshop on Exceptions
- Memory Exhaustion
- Notification of Memory Exhaustion
- Handling Memory Exhaustion
- Modern Memory Management
- Resource Acquisition Is Initialization (RAII)
- 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 for Government
- Pricing Options Using Simulation
- Monte Carlo Simulation in C++
- Geometric Brownian Motion
- American vs European Options
- Slice-Based Valuation: Lattice Method
- Slice-Based Valuation: Partial Differential Equation (PDE) Method
- Valuation of American (Pre-Determined Dates) Bermudan Option
Module 4 - C++ Final Phase
- Auto Keyword
- The New Auto Keyword
- The New Auto Return Syntax
- Enumerations (Enums)
- New-Style Enums
- Constexpr
- New Constant Expressions
- About Constness
- Const and Mutable Explained
- Lambdas & Function Objects
- Classes That Act Like Functions
- Introduction to Lambda Functions
- Chrono Library
- An Introduction to the New Chrono Library for Government
Module 5
- Casting
- Standard Library
- Strings
- Containers
- Vectors (vs)
- Lists
- Maps
- Arrays
- Tuples
- 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’s Threading, Async/Future, and Atomic Types Implementation for Government
- Variadic Templates - An Introduction to C++11’s Variadic Templates for Government
Requirements
Programming Fundamentals for Government
In the context of public sector operations, programming knowledge is essential for developing and maintaining efficient and secure information systems. Understanding core programming concepts enables government professionals to enhance data management, streamline workflows, and ensure compliance with regulatory requirements. Key areas of focus include:
- Basic Syntax and Structures: Familiarity with fundamental programming constructs such as variables, loops, and conditional statements is crucial for writing clear and effective code.
- Data Types and Manipulation: Knowledge of various data types (e.g., integers, strings, arrays) and methods to manipulate them is essential for accurate data processing and analysis.
- Algorithms and Data Structures: Understanding algorithms and data structures helps in optimizing performance and solving complex problems efficiently.
- Object-Oriented Programming (OOP): OOP principles, such as encapsulation, inheritance, and polymorphism, are vital for building scalable and maintainable software systems.
- Version Control: Utilizing version control systems like Git ensures that code changes are tracked and managed effectively, promoting collaboration and accountability within development teams.
By equipping government employees with these programming fundamentals, agencies can improve their technological capabilities and better serve the public. This foundational knowledge supports the development of robust applications and systems that align with the high standards of governance and transparency required in the public sector.
Testimonials (5)
General course information
Paulo Gouveia - EID
Course - C/C++ Secure Coding
Enjoyed the flexibility and variety of topics, the combination of trainings and exercises meant that I could apply what I'd learnt straight away. I also enjoyed the projects on the last day to bring everything together.
Luca Ricagni - Rockwell Collins UK Limited
Course - Advanced C++
I liked being submerged into the C++ language for 5 days - not interrupted by regular work - in a row a lot ... Personally not as experienced in C++ as my colleagues, I decided to join this course to take a deep dive. The dive triggered me hugely to learn more ... which is exactly what I wanted to achieve. I appreciated the expertise knowledge of the trainer - and that of my colleagues. The fact that topics were very quickly touched and not addressed in detail, is what I expect from an advanced course. Sometimes too quick for me to follow (but that's a known and accepted drawback from my joining this course :-)) ... but on the other hand provided me with a fairly complete overview of the subtleties of the language. Thanks a lot for presenting a course in this way! Most appreciated!!!
Jan Grauwen - Septentrio N.V.
Course - Advanced C++ Software Design
Interactivity, time for self-contained programming. I learn easier if I have the chance to find out the answer and not just telling me it. It was also a very good thing that the training was well-planned, we kept coffee pauses and the training did not lose my attention. The trainer had very deep knowledge in C++, we felt we could ask anything.
Barna Szecsi - GIS Europe SE
Course - C++ for Embedded Systems
The details on how compiler behaves depending on to the syntax usage. The "Quiz" sections are very stimulating