Description
Who Should Attend
This course is designed for developers who already have programming experience and want to learn or modernise their C++ skills, including:
• Software Developers learning C++ as an additional language
• Engineers transitioning into systems or embedded development
• Developers working with existing C++ codebases
• Technical professionals looking to update their knowledge of modern C++
Prerequisites
Participants should have a basic understanding of programming concepts.
This course is not intended for complete beginners using C++ as their first programming language.
Learning Objectives
By the end of this course, participants will be able to:
• understand the C++ compilation model and core syntax
• work effectively with variables, references, and pointers
• apply best practices when designing functions and classes
• write safe, generic, and efficient code using templates
• use standard library containers and algorithms effectively
• understand modern C++ features introduced in C++11, C++14, and C++17
• apply object-oriented programming principles to structure applications
• improve performance, readability, and maintainability of C++ code
Course Content
Getting Started with C++
Participants begin by understanding the foundations of the language and how C++ programs are structured and executed.
Topics typically include:
• the C++ compilation model
• built-in data types
• pointers and references
• control flow
• exception handling using try-catch blocks
• arrays and basic data structures
Functions and Program Structure
This section focuses on organising code effectively using functions.
Topics typically include:
• function declaration and definition
• local and global variables
• passing arguments and returning values
• working with const references and r-value references
• default arguments and const correctness
• namespaces
• function overloading
Classes and Object-Oriented Design
Participants learn how to structure applications using object-oriented programming.
Topics typically include:
• declaring and defining classes
• member functions
• constructors and destructors
• Resource Acquisition Is Initialization (RAII)
• nested classes
• copy constructors and assignment operators
• operator overloading
• functors
Generic Programming and Templates
This section introduces one of the most powerful features of C++.
Topics typically include:
• function and class templates
• non-type template parameters
• writing generic algorithms
• variadic templates
• improving usability and readability of templates
• applying generic programming techniques
Standard Library Containers and Algorithms
Participants explore the capabilities of the C++ Standard Library.
Topics typically include:
• sequence containers
• associative containers
• unordered containers
• iterators
• standard algorithms
• modern features such as std::optional and std::variant
• selecting the right container for different problems
Object-Oriented Programming in Practice
This section builds on earlier concepts to apply object-oriented design more deeply.
Topics typically include:
• inheritance and polymorphism
• virtual methods
• interfaces in C++
• dynamic memory management
• writing safe and maintainable object-oriented code
Delivery Approach
This is a hands-on, practical programme designed to build real development capability.
It includes:
• instructor-led technical sessions
• guided coding exercises
• real-world programming scenarios
• practical application of concepts throughout the course
Duration
5 Days
Delivery Options
This course can be delivered as:
• a public scheduled course
• a private team programme
• virtual delivery
• on-site classroom training
Outcomes
After completing this course, participants will be able to:
• write structured, efficient, and maintainable C++ applications
• apply both object-oriented and generic programming techniques
• use the Standard Template Library effectively
• develop code that is robust, high-performance, and scalable
• modernise their approach using features from C++11, C++14, and C++17
Additional Notes
This course provides a strong foundation for further development in areas such as:
• advanced modern C++ (C++17 / C++20)
• embedded and systems programming
• high-performance and infrastructure development
Participants are encouraged to bring real-world examples where possible, allowing the learning to be directly applied to their own development environments.
Senior Software Architect & Development Instructor
Microsoft MVP | 30+ Years Engineering Experience
This course is presented by Peter
Peter brings more than 30 years of experience in software architecture, development, and technical training, helping engineering teams design, modernise, and improve complex systems across enterprise, cloud, embedded, and data-driven environments.
He has been exploring the role of AI in software engineering since the early wave of modern AI tooling, focusing on how development teams can use AI productively while maintaining strong engineering standards, governance, and architectural discipline.
Alongside his engineering background, Peter has a Master’s level background in Mathematics and is currently working towards a PhD, bringing deep analytical insight into how AI systems behave and how engineers should evaluate and integrate them responsibly.




