Description
Who Should Attend
This course is designed for developers with existing C++ experience who want to deepen their knowledge, including:
• Software Engineers working with C++
• Embedded and Systems Developers
• Developers working with performance-critical applications
• Technical Leads and Senior Engineers
Learning Objectives
By the end of this course, participants will be able to:
• understand and apply key C++17 language features
• use the Standard Template Library (STL) effectively
• write more efficient and maintainable C++ code
• select appropriate containers and algorithms for different scenarios
• improve performance using modern C++ techniques
• refactor and modernise existing C++ codebases
Course Content
Modern C++ and C++17 Overview
Participants begin by understanding how C++ has evolved and why modern practices are important.
Topics typically include:
• evolution of C++ and the role of C++17
• benefits of adopting modern C++ approaches
• common challenges in legacy codebases
• principles of writing clean, maintainable code
Key C++17 Language Features
Participants explore the most impactful features introduced in C++17.
Topics typically include:
• structured bindings
• if constexpr and compile-time logic
• std::optional, std::variant, and std::any
• filesystem library
• improvements to type deduction and initialisation
• other features that improve code clarity and safety
Mastering the Standard Template Library (STL)
This section focuses on using the STL effectively in real-world applications.
Topics typically include:
• overview of STL components: containers, algorithms, iterators
• choosing the right container for performance and use case
• using standard algorithms to simplify code
• understanding iterator patterns
• writing more expressive and efficient code using STL
Writing Efficient and Maintainable Code
Participants learn how to combine C++17 features and STL usage to improve code quality.
Topics typically include:
• reducing complexity through better abstractions
• writing expressive and readable code
• avoiding common mistakes with STL usage
• improving maintainability in larger codebases
Performance and Optimisation
This section focuses on achieving high performance while maintaining clarity.
Topics typically include:
• understanding performance characteristics of STL containers
• avoiding unnecessary copies and overhead
• efficient memory usage
• balancing performance with readability
Modern C++ Design Approaches
Participants explore how modern C++ supports better software design.
Topics typically include:
• applying modern design principles in C++
• structuring code for scalability and reuse
• improving modularity
• aligning design with modern language capabilities
Refactoring and Modernisation
Participants learn how to introduce modern C++ into existing systems.
Topics typically include:
• identifying opportunities for improvement
• refactoring legacy code using C++17 features
• replacing custom implementations with STL solutions
• improving consistency and maintainability
Practical Application and Exercises
The course includes hands-on exercises to reinforce learning.
Participants will:
• apply C++17 features in realistic scenarios
• use STL components to solve problems efficiently
• refactor and improve existing code examples
• explore different approaches and trade-offs
Delivery Approach
This is a hands-on, developer-focused programme designed to deliver immediate value.
It includes:
• instructor-led technical sessions
• guided coding exercises
• real-world examples and use cases
• discussion of best practices and trade-offs
Duration
3 Days (adjust if needed)
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:
• use C++17 features and STL effectively in real-world development
• write cleaner, more efficient, and maintainable code
• improve performance using modern techniques
• modernise existing codebases
• apply best practices to complex C++ systems
Additional Notes
This programme is particularly valuable for teams working on performance-critical or long-lived systems, where efficient and maintainable code is essential.
Participants are encouraged to bring examples from their own codebases where possible, allowing the learning to be directly applied to their work.
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.



