About the course
This isn't just a theoretical course; it's your hands-on gateway to mastering the fundamentals of this powerful and versatile language. You'll gain the core skills you need to begin building applications confidently across a multitude of platforms, from the familiar landscapes of Microsoft Windows and Linux to the cutting-edge world of IoT and DSP devices.
Right from the start, you'll become familiar with essential programming concepts and the very tools and processes that will seamlessly integrate you into your business's development flow. To support your learning, you'll receive a comprehensive, fully indexed manual – your go-to reference long after the course ends. Plus, you'll dive into hundreds of downloadable, practical code samples that bring the manual to life, allowing for in-depth exploration far beyond typical presentation-heavy courses. And to truly solidify your understanding and hone your newfound skills, you'll actively participate in numerous hands-on exercises that reinforce every concept.
We understand that your needs are unique. That's why this C++ training is highly adaptable. While our standard syllabus is a focused 5 days for existing developers, we can tailor it to your specific requirements, expanding up to 15 days for more in-depth training, such as graduate schemes. You'll have the opportunity to shape the curriculum to match your team's current skills, project goals, and learning objectives – even incorporating advanced C++ topics to ensure you get exactly the training you need.
We can tailor the content so that it will be suitable for beginners with little or no prior C++ knowledge through to experienced C++ programmers wishing to improve their knowledge.
Online and in-house face-to-face options are available - as part of a wider customised training programme, or as a standalone workshop, on-site at your offices or at one of many flexible meeting spaces in the UK and around the World.
-
- Write and execute C++ programs, mastering fundamental data types, operators, and flow control statements.
- Design and implement robust functions, including overloading, default arguments, and various parameter passing techniques.
- Manage memory effectively using dynamic allocation (new/delete) and modern C++ Smart Pointers to prevent common memory issues.
- Apply Object-Oriented Programming (OOP) principles by designing and implementing classes, objects, constructors, destructors, and static members.
- Build complex class hierarchies using inheritance and implement polymorphism through virtual functions and abstract base classes.
- Adhere to S.O.L.I.D. principles to create highly maintainable, extensible, and well-structured C++ code.
- Implement robust error handling using C++ exceptions and assertions for resilient applications.
- Leverage the Standard Template Library (STL), including containers (Vectors, Maps, Lists) and algorithms, for efficient data management and manipulation.
- Develop generic code using function and class templates to write flexible and reusable components.
- Implement multithreaded applications in C++, managing thread creation, synchronization (mutexes, condition variables), and atomic operations for concurrent execution.
-
Programmers and Software Developers who are looking to develop C++ applications and system software or maintain existing an existing C++ codebase. The course is suitable for developers coming from other languages such as Java, C#, or Python who need to cross-train.
-
Some existing experience of programming or scripting in another language would be useful; previous experience of Object Oriented Programming is not mandatory.
-
This C++ course is available for private / custom delivery for your team - as an in-house face-to-face workshop at your location of choice, or as online instructor-led training via MS Teams (or your own preferred platform).
Get in touch to find out how we can deliver tailored training which focuses on your project requirements and learning goals.
-
C++ Programs
Writing / editing c++ source code
Compiling and executing a program
Fundamental Data Types & Operators
Composite Data Types
Typedefs
Enumerations
Arrays
Structures
Unions
Bit Structures
C++ Simple Data types and Expressions
Flow Control statements
Functions
Function Declarations
Calling Functions
Function Definition
Returning values using the return Statement
Function Overloading
Default Arguments
Passing Copied Parameters – By Value
Passing Referenced Parameters – By Reference
Calling Conventions cdecl, fastcall, stdcall & thiscall
Inline Functions
Scope of variables
Storage Class
Dynamic Memory Allocation
The New & Delete Operators
Placement New Operator
Memory Leakage
Pointers
pointers to char
nullptr
RAII
Smart Pointers (C++11)
Pointers to Arrays
Pointer Arithmetic
The void Pointer
Pointers to Functions
Architectural Features
Namespaces
Header & Source Files
Debugging C++ Programs
Files in C++
The Principles of OBJECT-ORIENTED Programming
Classes & Objects
Class Implementation
Using Objects
Constructors
Destructors
Static Class Data Members
Static Class Member Functions
The C++ Const Modifier
Class Hierarchies & Inheritance
Deriving Classes
Public Private and Protected Inheritance
Protected Access
Base Class Initialisation
Multiple Inheritance
Polymorphism
Virtual Functions
Virtual Destructors
Pure Virtual Functions
Abstract Base Classes
S.O.L.I.D
Single Responsibility Principle
Open / Closed Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
Advanced Casting Operators
static_cast
dynamic_cast
const_cast
reinterpret_cast
Advanced Constructors & Operator Overloading
Copy Constructors
Move Constructors
Conversion Constructors
Operator Overloading
Exception Handling
Exceptions
Assertions
Standard Template Library
Vectors
Queues
Stacks
Lists
Maps
Multimap
Set
Iterators
STL Algorithms
Templates
Template functions
Template classes
Introduction to Lambda Expressions
C++11, C++14, C++17, C++20 & C++23
Multithreading in C++
Creating Your Own Threads
Starting Threads
Identifying threads
Start a Thread with a Lambda
Thread Synchronization Issues
Using a mutex
Exceptions and Locks
Automatic Lock Management
Recursive Locking
Timed Locking
Call once
Condition variables
Atomic Types
Introduction To Design Patterns
Creational Design Patterns
Behavioural Design Patterns
Structural Design Patterns
Introduction To Real Time Systems
Operating System Calls
The Unix API
The Windows API
-
https://isocpp.org/ - the home of Standard C++
https://www.jetbrains.com/clion/ - popular IDE for C and C++
https://visualstudio.microsoft.com/ - another full-featured C++ coding environment
Microsoft's STL - C++ Standard Library reference (STL)
Trusted by



