
C++ Language Course
Master C++ from the ground up and write the kind of high-performance code that powers operating systems, game engines, and embedded devices. This course covers everything from core syntax and memory management to templates, concurrency, and modern C++20 features. You will finish with the skills and tools that professional C++ developers use every day.
What you will learn:
You will start by setting up a professional development environment and understanding how C++ programs compile and link. From there, you will work through data types, control flow, pointers, and dynamic memory before moving into object-oriented design and generic programming with templates. The course covers the C++ Standard Library in depth, including containers, algorithms, and modern utilities. You will also learn concurrency with threads and atomics, error handling strategies, and performance profiling techniques. By the end, you will know how to structure multi-file projects with CMake, write unit tests with Google Test, and apply design patterns used in production codebases.
How you study in practice C++ Language Course
How you practise C++ Language Course
For companies looking to train their teams
With Dedika for businesses, the course includes exercises and examples tailored to your company and its specific needs.
Course content
8 Chapters • 40 LessonsDuration between 4 and 360 hours (you decide)
Chapter 1HideHide detailsSee detailsC++ Foundations and Environment Setup
C++ Foundations and Environment Setup
Lesson 1 • Input, Output, and Basic Debugging
Introduces std::cin and std::cout for console I/O and basic debugging with print statements and compiler diagnostics. Builds habits for iterative development.
Lesson 2 • Compilation and Linking Pipeline
Explains preprocessing, compilation, assembly, and linking as distinct stages. Learners trace how source files become executable binaries.
Lesson 3 • Setting Up the Development Environment
Installs and configures compilers, editors, and build tools on major platforms. Ensures every learner has a reproducible workspace before writing code.
Lesson 4 • Structure of a C++ Program
Dissects the anatomy of a minimal C++ source file, including headers, the main function, and namespaces. Connects syntax rules to the compilation model.
Lesson 5 • History and Design Philosophy of C++
Traces C++ origins from C and Simula, highlighting zero-overhead abstraction and systems-level control. Provides context for design decisions encountered throughout the course.
Chapter 2HideHide detailsSee detailsCore Data Types, Variables, and Operators
Core Data Types, Variables, and Operators
Lesson 1 • Arithmetic and Bitwise Operators
Explores arithmetic, modulo, increment, and bitwise operators with precedence rules. Learners apply operators to solve numeric and bit-manipulation problems.
Lesson 2 • Variable Declaration and Initialization
Distinguishes default, value, copy, and direct initialization forms. Emphasises uniform brace initialization to prevent narrowing conversions.
Lesson 3 • Expressions, Statements, and Undefined Behaviour
Defines sequence points, value categories, and common sources of undefined behaviour. Builds disciplined coding habits from the start.
Lesson 4 • Type Conversions and Casting
Explains implicit promotion, narrowing, and explicit C++ casts. Learners learn to convert types safely without undefined behaviour.
Lesson 5 • Fundamental Types and Sizes
Covers integral, floating-point, character, and boolean types with their sizes and ranges. Connects type choice to memory efficiency and correctness.
Chapter 3HideHide detailsSee detailsControl Flow and Functions
Control Flow and Functions
Lesson 1 • Recursion and Stack Considerations
Applies recursion to classic problems and analyses stack depth and tail-call patterns. Learners balance elegance with practical stack limitations.
Lesson 2 • Conditional Statements
Covers if-else chains, switch-case, and the ternary operator with fall-through rules. Learners select the right construct for each decision scenario.
Lesson 3 • Loops and Iteration
Introduces for, while, do-while, and range-based for loops with break and continue. Learners choose loops based on iteration pattern and termination condition.
Lesson 4 • Function Overloading and Name Mangling
Explains how the compiler resolves overloaded function calls and generates mangled names. Learners write overloads that are unambiguous and maintainable.
Lesson 5 • Function Declaration and Definition
Teaches function signatures, return types, forward declarations, and the call stack. Connects function design to code reuse and maintainability.
Chapter 4HideHide detailsSee detailsPointers, References, and Memory Management
Pointers, References, and Memory Management
Lesson 1 • Smart Pointers and Ownership
Introduces unique_ptr, shared_ptr, and weak_ptr as RAII wrappers that automate memory management. Learners replace raw owning pointers with safe alternatives.
Lesson 2 • References and Their Semantics
Distinguishes lvalue references from pointers and introduces rvalue references for move semantics. Learners use references to write efficient, alias-safe code.
Lesson 3 • Common Memory Errors and Sanitizers
Identifies dangling pointers, buffer overflows, use-after-free, and double-delete errors. Learners use AddressSanitizer and Valgrind to detect and fix bugs.
Lesson 4 • Pointers and Address Arithmetic
Introduces pointer declaration, dereferencing, null pointers, and pointer arithmetic. Connects low-level addressing to array traversal and performance.
Lesson 5 • Dynamic Memory Allocation
Covers new, delete, new[], and delete[] with heap layout and fragmentation concepts. Learners allocate and release memory without leaks or double-frees.
Chapter 5HideHide detailsSee detailsObject-Oriented Programming in C++
Object-Oriented Programming in C++
Lesson 1 • Polymorphism and Virtual Functions
Explains virtual dispatch, vtables, pure virtual functions, and abstract classes. Learners write extensible code that follows the open-closed principle.
Lesson 2 • Classes, Structs, and Encapsulation
Defines class and struct syntax, access specifiers, and member functions. Learners encapsulate data to enforce invariants and hide implementation details.
Lesson 3 • Constructors, Destructors, and the Rule of Five
Covers default, parameterised, copy, and move constructors alongside destructors. Learners apply the Rule of Five to manage resources correctly.
Lesson 4 • Operator Overloading
Overloads arithmetic, comparison, stream, and subscript operators for user-defined types. Learners follow conventions that make overloaded operators intuitive.
Lesson 5 • Inheritance and Class Hierarchies
Implements single and multiple inheritance with base class access control. Learners design hierarchies that promote code reuse without tight coupling.
Chapter 6HideHide detailsSee detailsTemplates and Generic Programming
Templates and Generic Programming
Lesson 1 • Class Templates
Defines class templates with member functions, partial specialisation, and default parameters. Learners build generic containers modelled on standard library patterns.
Lesson 2 • Template Metaprogramming Basics
Uses type traits, if constexpr, and compile-time computation to specialise behaviour. Learners optimise code paths without runtime overhead.
Lesson 3 • Variadic Templates and Parameter Packs
Expands parameter packs with fold expressions to handle arbitrary argument counts. Learners implement forwarding wrappers and type-safe variadic utilities.
Lesson 4 • Function Templates
Introduces function template syntax, type deduction, and explicit instantiation. Learners replace duplicated type-specific functions with a single generic version.
Lesson 5 • Concepts and Constraints (C++20)
Applies requires clauses and standard concepts to constrain template parameters. Learners produce clearer error messages and self-documenting generic interfaces.
Chapter 7HideHide detailsSee detailsThe C++ Standard Library
The C++ Standard Library
Lesson 1 • Utilities: Optional, Variant, and Span
Uses std::optional, std::variant, std::any, and std::span to express nullable, sum, and view types. Learners eliminate null pointer bugs and unsafe unions.
Lesson 2 • Standard Algorithms
Applies sorting, searching, transforming, and partitioning algorithms from <algorithm>. Learners replace hand-written loops with expressive, tested library calls.
Lesson 3 • Strings, String Views, and Formatting
Covers std::string operations, std::string_view for non-owning access, and std::format for type-safe output. Learners handle text efficiently without unnecessary copies.
Lesson 4 • Iterators and Ranges
Explains iterator categories, range-based algorithms, and C++20 ranges and views. Learners compose lazy pipelines that process data without intermediate copies.
Lesson 5 • Sequence and Associative Containers
Compares vector, deque, list, map, unordered_map, set, and their performance profiles. Learners select containers based on access pattern and complexity requirements.
Chapter 8HideHide detailsSee detailsAdvanced C++ Techniques and Best Practices
Advanced C++ Techniques and Best Practices
Lesson 1 • Move Semantics and Value Categories
Deepens understanding of rvalue references, std::move, and move-only types. Learners eliminate unnecessary copies in performance-critical code paths.
Lesson 2 • Lambdas and Functional Patterns
Defines lambda syntax, capture modes, generic lambdas, and std::function. Learners compose higher-order functions and callbacks with minimal boilerplate.
Lesson 3 • Error Handling Strategies
Compares exceptions, error codes, std::expected, and assertions for communicating failures. Learners choose strategies that balance safety, performance, and clarity.
Lesson 4 • Profiling, Optimisation, and Undefined Behaviour
Profiles with perf and gprof, applies compiler optimisations, and eliminates undefined behaviour using sanitizers. Learners tune code based on measured data.
Lesson 5 • Concurrency with Threads and Atomics
Launches threads, synchronises with mutexes and condition variables, and uses atomics for lock-free patterns. Learners write data-race-free concurrent programs.
Your valid completion certificate
This course is for you:
Computer science students: eager to move beyond scripting into systems-level programming.
Game developers: wanting direct hardware control for performance-critical engine code.
Embedded engineers: needing to write efficient firmware for resource-constrained devices.
Python or Java developers: ready to understand what happens beneath managed runtimes.
Self-taught programmers: looking to close gaps and build a rigorous C++ foundation.
Career changers: targeting roles in robotics, automotive, or high-frequency trading software.
What our students say
Your lessons are perfect. I purchased the one-year package and finally have the opportunity to follow various topics of interest without needing to change platforms... I'm grateful for everything you do, I've already recommended you to other people...

I like how the lessons are straight to the point and how I can change chapters and skip content I don't need.

I like the content and the way videos are presented and transcribed, which speeds up the process!

The platform is fast, simple to use. The diversity of content and complementary videos really help with learning.

Top qualifications
FAQ
Who is Dedika?
Is the certificate valid in South Africa?
Are the courses free?
What is the course workload?
What are the courses like?
How do the courses work?
What is the duration of the courses?
What is the cost or price of the courses?
What is an EAD or online course and how does it work?
PDF Course




















