Description
Who Should Attend
This course is designed for developers who already have experience with C++ and want to deepen their capability, including:
• Software Engineers working with C++
• Embedded and Systems Developers
• Developers working on performance-critical applications
• Technical Leads and Senior Engineers
Prerequisites
Participants should have a solid understanding of core C++ programming concepts, including functions, classes, and basic object-oriented principles.
Learning Objectives
By the end of this course, participants will be able to:
• understand the anatomy and workflow of C++ applications
• structure code for clarity, maintainability, and scalability
• apply advanced features such as templates, SFINAE, and constexpr
• design and implement efficient APIs and reusable components
• manage resources safely using modern C++ practices (RAII, move semantics)
• work with threads, concurrency, and asynchronous execution
• test, debug, and validate complex applications
• optimise performance through profiling, memory alignment, and cache-aware design
Course Content
Anatomy of Portable C++ Software
Participants begin by understanding how large C++ systems are structured and managed.
Topics typically include:
• managing C++ projects and code organisation
• writing clear and readable code
• understanding compilation and portability considerations
Types, Deduction, and Code Structure
This section focuses on the C++ type system and structuring robust applications.
Topics typically include:
• C++ types and type deduction
• creating user-defined types
• structuring code effectively
• inheritance, polymorphism, and interfaces
Templates and Generic Programming
Participants explore advanced template-based programming techniques.
Topics typically include:
• function and class templates
• generic programming concepts
• type aliases (typedef and using)
• advanced techniques such as SFINAE and variadic templates
Exceptions and Resource Management
This section focuses on writing safe and reliable C++ code.
Topics typically include:
• exception handling in C++
• RAII (Resource Acquisition Is Initialization)
• move semantics
• name lookup and common pitfalls
• applying best practices for resource management
Software Architecture and Functional Techniques
Participants explore structuring applications for flexibility and scalability.
Topics typically include:
• separation of concerns in software design
• function objects and lambda expressions
• advanced use of variadic templates
• designing reusable and maintainable components
Concurrency and Multithreading
This section introduces concurrent and asynchronous programming in C++.
Topics typically include:
• synchronous and asynchronous execution
• multi-threading fundamentals
• synchronisation, race conditions, and data hazards
• futures, promises, and async programming
Streams and Input/Output
Participants learn how to handle input and output effectively.
Topics typically include:
• file I/O and stream classes
• string-based input/output
• I/O manipulators
• creating and extending streams
• use of macros in C++
Testing and Debugging
This section focuses on ensuring code quality and reliability.
Topics typically include:
• assertions and defensive programming
• unit testing and mock testing
• debugging techniques
• breakpoints, watchpoints, and data inspection
• understanding and handling exceptions
Performance and Optimisation
Participants explore how to maximise the performance of C++ applications.
Topics typically include:
• performance measurement and benchmarking
• runtime profiling
• optimisation strategies
• memory alignment and cache efficiency
• writing cache-friendly code
• understanding CPU behaviour such as branch prediction
Delivery Approach
This is a hands-on, engineering-focused programme designed to build real capability.
It includes:
• instructor-led technical sessions
• practical coding exercises
• real-world scenarios and case studies
• discussion of best practices and trade-offs
Duration
3 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:
• design and build advanced C++ applications with confidence
• apply modern techniques for resource management and code structure
• develop concurrent and high-performance systems
• improve code quality through testing and debugging practices
• optimise applications for performance and efficiency
Additional Notes
This programme is particularly valuable for teams working on complex, performance-critical, or long-lived systems, where efficiency, reliability, and maintainability are essential.
It also provides a strong foundation for progression into areas such as:
• modern C++ (C++17 / C++20)
• embedded C++ development
• high-performance and systems engineering
Participants are encouraged to bring real-world challenges where possible, allowing the learning to be directly applied to their own projects.
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.



