757-216-3656 | Monday–Friday 8:30 AM – 4:30 PM ET | info@itdojo.com
|

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.

Get More Information

We work with Government Agencies, Military, government contractors, and corporate clients. As much as we would love to, our business model does not include working with the general public.