
Functions, Recursion, and Program Organization in C++ Course
Master the core pillars of professional C++ development — functions, recursion, and modular design — in one comprehensive course. You'll build everything from recursive sorting algorithms to multi-file projects with CMake, gaining the skills that real software engineering roles demand. This course takes you from C++ fundamentals all the way to templates, lambdas, and technical interview readiness.
What you'll learn:
Build and trace recursive functions including factorial, merge sort, and backtracking algorithms.
Design modular C++ programs using header files, namespaces, compilation units, and build tools.
Apply pointer arithmetic, dynamic memory allocation, and RAII to manage resources safely.
Implement higher-order functions using lambdas, std::function, and function pointer dispatch patterns.
Use function templates and STL algorithms to write generic, type-safe, reusable C++ code.
Solve classic technical interview problems by applying structured recursive and dynamic programming strategies.
How you study in practice Functions, Recursion, and Program Organization in C++ Course
How you practise Functions, Recursion, and Program Organization in C++ Course
For businesses looking to train their team
With Dedika for businesses, the course includes exercises and examples tailored to your own business and the way your company needs.
Course content
8 Chapters • 40 LessonsDuration between 4 and 360 hours (you decide)
Chapter 1HideHide detailsSee detailsC++ Fundamentals and Program Structure
C++ Fundamentals and Program Structure
Lesson 1 • Setting Up the C++ Environment
Install a compiler toolchain and configure an IDE for C++ development. Establishes the baseline workspace used throughout the course.
Lesson 2 • Core Data Types and Variables
Covers primitive types, variable declaration, initialisation, and type sizes. Provides the data foundation required for all subsequent function work.
Lesson 3 • Operators and Expressions
Explains arithmetic, relational, logical, and bitwise operators with precedence rules. Enables correct expression construction inside functions.
Lesson 4 • Control Flow Statements
Teaches if-else, switch, loops, and jump statements for directing program execution. Prepares students to implement conditional logic inside functions.
Lesson 5 • Input, Output, and Basic Debugging
Covers standard I/O streams and simple debugging techniques using print statements. Enables students to test and observe program behaviour interactively.
Chapter 2HideHide detailsSee detailsDefining and Calling Functions
Defining and Calling Functions
Lesson 1 • Parameter Passing Mechanisms
Contrasts pass-by-value, pass-by-reference, and pass-by-pointer semantics. Directly impacts how functions read and modify caller data.
Lesson 2 • Default Arguments and Function Overloading
Teaches default parameter values and overloaded function signatures for flexible APIs. Reduces code duplication while maintaining clear interfaces.
Lesson 3 • Scope, Lifetime, and Storage Classes
Explains local, global, and static variable behaviour within and across functions. Prevents common bugs caused by unintended variable sharing.
Lesson 4 • Inline Functions and the Call Stack
Covers inline expansion hints and how the call stack manages function invocations. Builds intuition for performance and stack-depth considerations.
Lesson 5 • Function Syntax and Declaration
Covers return types, parameter lists, function prototypes, and definitions. Establishes the structural rules every function in the course will follow.
Chapter 3HideHide detailsSee detailsArrays, Pointers, and Memory Basics
Arrays, Pointers, and Memory Basics
Lesson 1 • Arrays and Array Operations
Covers one-dimensional and multidimensional array declaration, initialisation, and traversal. Provides the data structures used in recursive and iterative algorithms.
Lesson 2 • References vs. Pointers in Depth
Compares reference and pointer semantics for aliasing, nullability, and reassignment. Guides students towards idiomatic C++ parameter and return-type choices.
Lesson 3 • Pointers and Address Arithmetic
Explains pointer declaration, dereferencing, and arithmetic on contiguous memory. Essential for understanding how arrays decay to pointers in function calls.
Lesson 4 • Dynamic Memory Allocation
Covers new, delete, and heap allocation patterns for runtime-sized data. Prepares students to build data structures used in recursive algorithms.
Lesson 5 • Passing Arrays to Functions
Demonstrates how arrays are passed as pointers and how size information is conveyed. Connects pointer semantics to practical function design.
Chapter 4HideHide detailsSee detailsRecursion Fundamentals
Recursion Fundamentals
Lesson 1 • Common Recursive Patterns
Catalogues divide-and-conquer, accumulator, and tail-recursive patterns with examples. Gives students reusable templates for structuring recursive solutions.
Lesson 2 • Recursion Pitfalls and Debugging
Addresses infinite recursion, missing base cases, and stack overflow errors. Equips students to diagnose and fix broken recursive functions systematically.
Lesson 3 • Thinking Recursively
Introduces the recursive mindset: identifying subproblems and trusting the recursive call. Shifts students from iterative to recursive problem-solving patterns.
Lesson 4 • Recursion on Arrays and Strings
Applies recursion to linear data structures using index and pointer parameters. Extends recursive thinking beyond numeric problems to sequence processing.
Lesson 5 • Writing and Tracing Recursive Functions
Guides students through writing factorial, sum, and power functions with full call traces. Builds mechanical confidence before tackling complex recursive structures.
Chapter 5HideHide detailsSee detailsAdvanced Recursion and Classic Algorithms
Advanced Recursion and Classic Algorithms
Lesson 1 • Tree Traversal and Recursive Structures
Introduces binary trees and implements pre-order, in-order, and post-order traversals. Shows how recursive data structures naturally call for recursive algorithms.
Lesson 2 • Binary Search and Recursive Search
Covers recursive binary search on sorted arrays and its logarithmic complexity. Connects recursive structure to measurable performance improvements over linear search.
Lesson 3 • Memoisation and Recursive Optimisation
Introduces memoisation to eliminate redundant recursive calls in overlapping subproblems. Bridges pure recursion to dynamic programming as a performance strategy.
Lesson 4 • Backtracking and Combinatorial Recursion
Teaches backtracking through N-Queens, permutations, and subset generation problems. Develops the ability to prune search spaces and enumerate solutions systematically.
Lesson 5 • Recursive Sorting Algorithms
Implements merge sort and quicksort using recursive decomposition and in-place partitioning. Demonstrates how recursion enables efficient, elegant sorting solutions.
Chapter 6HideHide detailsSee detailsProgramme Organisation and Modular Design
Programme Organisation and Modular Design
Lesson 1 • Designing Cohesive Modules
Applies cohesion, coupling, and interface-design principles to C++ module boundaries. Produces code that is testable, reusable, and easy to maintain.
Lesson 2 • Build Systems: Makefiles and CMake
Introduces Makefile rules and CMakeLists.txt for automating multi-file builds. Enables students to manage dependencies and build configurations professionally.
Lesson 3 • Namespaces and Name Collision Prevention
Teaches namespace declaration, nesting, and the using directive for managing identifiers. Prevents name collisions in large codebases with multiple contributors.
Lesson 4 • Compilation Units and the Build Process
Explains preprocessing, compilation, linking, and object file generation step by step. Demystifies build errors and prepares students for Makefile and CMake usage.
Lesson 5 • Header Files and Source Separation
Covers header guards, include directives, and the declaration-definition split across files. Establishes the file organisation pattern used in all professional C++ projects.
Chapter 7HideHide detailsSee detailsFunction Pointers, Lambdas, and Higher-Order Design
Function Pointers, Lambdas, and Higher-Order Design
Lesson 1 • std::function and Type Erasure
Introduces std::function as a uniform wrapper for any callable type. Enables storing and passing heterogeneous callables through a single interface.
Lesson 2 • Function Pointers in C++
Covers function pointer syntax, typedef aliases, and passing functions as arguments. Provides the low-level foundation for callback and dispatch mechanisms.
Lesson 3 • Callbacks, Events, and the Strategy Pattern
Implements callback registration, event dispatch, and the strategy design pattern using callables. Connects language features to real-world software architecture decisions.
Lesson 4 • Lambda Expressions and Closures
Teaches lambda syntax, capture lists, and return-type deduction for inline callables. Enables concise, context-aware function objects without named function overhead.
Lesson 5 • Higher-Order Functions and Algorithms
Applies higher-order design to std::sort, std::transform, and custom algorithm templates. Demonstrates how callable parameters generalise algorithm behaviour.
Chapter 8HideHide detailsSee detailsTemplates, Generic Functions, and Code Reuse
Templates, Generic Functions, and Code Reuse
Lesson 1 • STL Algorithms and Generic Programming
Applies std::find, std::accumulate, std::partition, and related algorithms to containers. Demonstrates how generic programming replaces hand-written loops with expressive code.
Lesson 2 • Template Specialisation and Constraints
Teaches full and partial specialisation and C++20 concepts for constraining template parameters. Produces templates that fail clearly when misused.
Lesson 3 • Variadic Templates and Parameter Packs
Introduces variadic templates and fold expressions for functions accepting any number of arguments. Enables flexible utility functions like type-safe print and tuple builders.
Lesson 4 • Function Template Basics
Covers template syntax, type parameter deduction, and explicit instantiation for generic functions. Eliminates type-specific duplication while preserving full type safety.
Lesson 5 • STL Containers and Iterators
Surveys vector, list, map, and unordered_map with iterator-based traversal patterns. Provides the data structures that generic algorithms operate on.
Your valid completion certificate
This course is for you:
Computer science students: ready to move beyond introductory programming concepts.
Self-taught coders: wanting to close gaps in their C++ knowledge systematically.
Software developers from other languages: transitioning into C++ for systems-level work.
Embedded systems hobbyists: needing structured C++ skills for hardware programming projects.
Junior developers: preparing to pass technical interviews at competitive engineering companies.
Game development enthusiasts: building the C++ foundation required for engine-level coding.
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 and simple to use. The diversity of content and complementary videos really help with learning.

Top upskilling courses
FAQ
Who is Dedika?
Is the certificate valid in Australia?
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




















