
Advanced C++ Programming (Modern Advanced C++)
Course Duration
5 Days
Audience
Employees of federal, state and local governments; and businesses working with the government.
Prerequisites
Students should have solid experience with C++ programming, including object-oriented concepts, templates, and the Standard Library. Completion of Introduction to C++ Programming or equivalent experience is required.
Course Description
Advanced C++ Programming (Modern Advanced C++) is a lab-intensive, hands-on C++ training course geared for experienced C++ programmers who wish to take their development skills to the next level. Students will leave this course armed with the required skills to put advanced C++ programming skills right to work in a practical environment, using sound coding techniques and best practices. This comprehensive course consists of three modules. A preliminary module reviews topics, including inheritance, the ANSI C++ Standard Library, templates. I/O streams, and practical issues of C++ programming, such as reliability & testing. This material is covered as needed depending on the background of the students. The second module covers more advanced topics. Unit testing, advanced inheritance & polymorphism are discussed. Memory management along with move constructors and RAII are explored. Templates and generic programming are explored including lambda expressions and functors. The third module is a deep dive into the Standard C++ Library. Containers, Algorithms, Threads and much more. Throughout the course, new features of modern C++ (version 11 and beyond) are introduced as well as the impact on programming style. These new features include smart pointers, move constructors, functional programming and lambda expressions.
Learning Objectives
- C++ Fundamentals Refresher
- Modern C++
- Generic Programming
- Memory Management
- Inheritance and Polymorphism
- Exception Handling
- Operator Overloading
- Unit Testing in C++
- Functional Programming
- Runtime Type Information
- STL Containers
- STL Iterators
- Threads & Tasks
Course Outline
Session: Overview/Review of C++
- Implementing a basic O-O design
- Implementing Classes
Session: Modern C++
- New keywords in C++ 11,14,17
- RAII – Modern memory management in C++ – overview
- Copy vs Move semantics
- Namespaces
Session: Generic Programming
- General Purpose Functions
- Function Templates
- Template Parameters
- Template Parameter Conversion
- Function Template Problem
- Generic Programming
- General Purpose Classes
- Class Templates
- Class Template Instantiation
- Non Type Parameter
- C++ Containers overview
- Variadic Templates
Session: Memory Management
- The handle/body (Bridge) pattern
- Using strings effectively
- Smart Pointers
- Move constructor in depth
- Other <memory> features
Session: Inheritance and Polymorphism
- Base Class Initializer List
- Composition
- Member Initialization List
- Order of Initialization
- Inheritance vs. Composition
- Interfaces
- Polymorphism
- Chaining Constructors
- Inheriting Constructors
Session: Exception Handling
- Exception Handling
- try and catch
- Exception Flow of Control
- Context and Stack Unwinding
- Handling Exceptions in best Context
- Benefits of Exception Handling
- Unhandled Exceptions
- Clean Up
- Multiple Catch Handlers
Session: Operator Overloading
- What is overloadable?
- Why overload operators?
- Functors
Session: Unit Testing in C++
- Unit testing – Quick Overview
- Unit testing in C++
- Introduction <catch.hpp>
Session: Functional Programming
- Overview
- The IoC pattern
- Dependency Injection
- Functions as objects
- IoC via interface
- Functors
- IoC with Functors
- Implementing Functors
- Function Pointers
- IoC with Function Pointers
- Lambda Expressions
- Lambda Syntax
- IoC with Lambdas
Session: Runtime Type Information
- Runtime Type and Polymorphism
- type_info Class
- typeid Operator
- Compiler Options
- Safe Pointer Conversions
- Dynamic Cast
- New C++ Style Casts
- Static Cast
- Reinterpret Cast
- Const Cast
Session: STL Containers
- Vectors
- Vector Operations
- Typedefs
- Deques
- deque as Stack
- deque Functionality
- Lists
- Generic Programming
- Tradeoff with Lists
- List Memory Allocation
- list Functionality
- Associate Containers
- Sets
- Sets with User Defined Objects
- Multisets (Bags)
- Maps
- Multimaps
- Functional Programming with Containers
Session: STL Iterators
- Pointers
- Template Version
- String Version
- A Generalization of Pointers
- STL Iterators
- Input Iterators
- Output Iterators
- Forward Iterators
- Bidirectional Iterators
- Random Access Iterators
Session: Threads & Tasks
- Overview Threads
- Starting Threads
- Managing threads
- Overview of Tasks
- Tasks
- async
- Future & Promise
Frequently Asked Questions
What does the Advanced C++ Programming (Modern Advanced C++) course cover?
This course covers Advanced C++ Programming (Modern Advanced C++) training and best practices. IT Dojo delivers it as live instructor-led training with an emphasis on practical skills for government and DoD professionals.
How long is IT Dojo's Advanced C++ Programming (Modern Advanced C++) training?
IT Dojo's Advanced C++ Programming (Modern Advanced C++) training is 5 Days. It is available as live remote online instruction or on-site at your facility. All sessions are instructor-led with small class sizes to ensure individual attention.
Is this course available as live remote online training?
Yes. IT Dojo offers Advanced C++ Programming (Modern Advanced C++) as live remote online training. A certified instructor leads the session in real time. Students interact via chat or microphone. Classes are kept small (typically no more than 16 students) to ensure engagement. On-site delivery at your government facility or contractor location is also available.
What prerequisites are recommended before this course?
Students should have solid experience with C++ programming, including object-oriented concepts, templates, and the Standard Library. Completion of Introduction to C++ Programming or equivalent experience is required.
Does IT Dojo offer this training on-site at government or DoD facilities?
Yes. IT Dojo delivers Advanced C++ Programming (Modern Advanced C++) on-site at government agencies, DoD commands, military installations, and contractor facilities. On-site training is ideal for teams of four or more and can be customized to your organization's specific environment and mission requirements. Contact IT Dojo to schedule.
How do I register for this course?
IT Dojo training is employer sponsored. Your organization registers and pays for seats. To schedule Advanced C++ Programming (Modern Advanced C++) for your team, contact IT Dojo via the Request Training form or call 757-216-3656. IT Dojo will work with your contracting officer, training coordinator, or program office to set up the course.