Intermediate C++ Course Uganda – OOP, STL and Algorithms

Duration
4 weeks
Investment
UGX 450,000
Teaching
Live online
Program Introduction
Move beyond basic syntax with an intermediate C++ course built for developers and computing students in Uganda, with practical relevance across East Africa and Africa. In 4 weeks, you will learn how to design maintainable classes, manage object lifetime safely, use RAII and smart pointers, choose efficient STL containers, and process data with algorithms, lambdas and C++20 ranges. You will also create reusable templates, handle failures deliberately, test code automatically and build multi-file projects with CMake. Practical exercises use offline datasets and familiar regional scenarios, including SACCO operations, produce markets, schools and mobile-money transaction records. The course stays focused on modern C++ programming—no web development—and ends with a tested portfolio project that demonstrates stronger software design, correctness and performance reasoning.
Key Features & Benefits
• Focused 8-week progression from basic C++ to maintainable software • Modern C++20 OOP, STL, algorithms, ranges and templates • RAII, smart pointers and sanitizers for safer memory management • Practical complexity analysis for choosing efficient data structures • Automated unit testing and portable CMake builds • Uganda and East Africa data scenarios with offline-friendly projects • Portfolio capstone with source code, tests and project documentation • No web frameworks or unrelated technology detours
Real-World Applications
Learners can use the skills from this course to:
• Build reliable desktop, command-line and offline data-processing software. • Write maintainable C++ components for fintech, telecom, education, agriculture and logistics teams. • Prepare for C++ internships, junior developer roles and technical interviews in Uganda and East Africa. • Progress into embedded systems, robotics, simulation, game engines or systems programming. • Improve performance in data-heavy programs by selecting better containers and algorithms. • Contribute more confidently to existing C++ codebases and open-source projects. • Build reusable software libraries for African business and engineering problems.
Course outline and learning expectations
This is a tutor-led course. The outline shows what your tutor will cover; teaching materials and examinations are provided directly to enrolled students.
Live online
English (Uganda)
Intermediate
Upper Secondary · University · General Public
What you will learn
- By the end of this intermediate C++ programming course, the learner will be able to:
- Design cohesive classes with clear responsibilities and safe interfaces.
- Apply composition, inheritance and runtime polymorphism only where each is appropriate.
- Explain object lifetime, ownership, stack storage and dynamic storage.
- Use RAII and smart pointers to manage resources safely.
- Select suitable standard containers based on access patterns and complexity.
- Transform, search, sort and aggregate data with STL algorithms, iterators and lambdas.
- Write reusable function and class templates with introductory C++20 constraints.
- Represent failures with exceptions, `std::optional` or explicit results as appropriate.
- Organise, build and test a multi-file C++ project with CMake and automated unit tests.
- Evaluate basic time and space complexity and improve an inefficient solution.
Modules
- 1
Stronger Types, Interfaces and Class Design
Review of value types, references, `const` and object lifetimeEncapsulation, invariants and valid object stateConstructors, delegating constructors and member initialiser lists`explicit`, `default`, `delete`, `override` and `final`Separating interfaces from implementation**Practice:** Safer account, customer and transaction types - 2
Composition, Inheritance and Polymorphism
Composition as the default reuse techniqueWhen public inheritance models a true “is-a” relationshipVirtual functions, abstract interfaces and dynamic dispatchVirtual destructors and object slicingDependency inversion with small interfaces**Practice:** Pluggable transaction-fee or notification policies without web services - 3
Ownership, RAII and Smart Pointers
Automatic, static and dynamic storage durationDeterministic destruction and RAIIRule of zero and why raw `new`/`delete` are avoided in application code`std::unique_ptr`, `std::shared_ptr` and `std::weak_ptr`Non-owning pointers and referencesFinding memory errors with sanitizers**Practice:** Resource-safe member and asset registry - 4
STL Containers and Complexity
Choosing among `vector`, `deque`, `list`, `set`, `map` and unordered containersIterators and iterator invalidationKeys, values, hashing and custom comparisonBig-O reasoning for common container operationsMeasuring before changing a data structure**Practice:** Efficient lookup for school, clinic or cooperative records - 5
Algorithms, Lambdas and Ranges
Prefer standard algorithms to hand-written loops when intent becomes clearer`find_if`, `count_if`, `sort`, `transform`, `accumulate` and partitioningLambda captures and callable objectsC++20 ranges and views at a practical levelComposing readable data-processing pipelines**Practice:** Analyse offline mobile-money or market-transaction records - 6
Generic Programming
Function templates and class templatesType deduction and `auto`Template specialisation only where justifiedIntroductory C++20 concepts and constraintsGeneric code that remains readable and testable**Practice:** Reusable statistics, validation and repository components - 7
Reliable Programs, Builds and Tests
Choosing exceptions, `std::optional` or explicit status resultsException safety and RAIIProject structure with headers, source files and namespacesCMake targets and buildsUnit tests, fixtures, boundary cases and regression testsStatic analysis and warning-clean builds**Practice:** Convert an earlier program into a tested, multi-file project - 8
Capstone: Tested Regional Data Processor
Build one project: SACCO ledger, produce-market analyser or offline transaction processorModel the domain with safe classes and clear interfacesUse appropriate containers, algorithms and at least one reusable templatePersist and reload local dataAdd automated tests and run sanitizersDocument performance choices and demonstrate the final solution
Before you enroll
- Completion of Ellipkom’s beginner C++ course or equivalent practical knowledge.
- Ability to write and compile C++ programs using variables, conditions, loops and functions.
- Working knowledge of `std::string`, `std::vector`, simple classes and text-file input/output.
- Ability to diagnose basic compiler errors and use a debugger.
- A laptop or desktop computer and 8–10 study hours per week for 8 weeks.
What you need
- Laptop or desktop computer with at least 4 GB RAM and 5 GB free storage.
- A C++20-capable GCC, Clang or Microsoft Visual C++ compiler.
- Visual Studio Code, Visual Studio Community, CLion or another C++ IDE.
- CMake for portable project builds.
- Git for version control.
- A lightweight C++ test framework such as Catch2 or GoogleTest.
- Compiler sanitizers where supported: AddressSanitizer and UndefinedBehaviorSanitizer.
- No web framework, browser programming stack or database server is required.
Frequently asked questions
More in Computer Programming

Introduction to Object-Oriented Programming Concepts

Advanced Rust Systems Programming Course in Uganda & Africa

Intermediate Dart Programming in Uganda & East Africa

Intermediate Rust Programming Course in East Africa: Traits, Lifetimes & Concurrency

Advanced PHP Programming – Professional Course in Uganda

Data Structures and Algorithms with Python for Beginners in Uganda
More for Upper Secondary · University · General Public

Dart Programming for Beginners in Uganda & East Africa

Advanced C Systems Programming Course – Africa

Advanced C# Programming in Uganda: Async, Generics & Performance

Advanced C++ Course Uganda – Performance and Concurrency

Advanced Computer Vision & Image Recognition

Advanced Dart Programming & Concurrency for Africa
Quick Actions
Need Help?
Have questions about this program? Our team is here to help!