Advanced C++ Course Uganda – Performance and Concurrency

Duration
4 weeks
Investment
UGX 500,000
Teaching
Live online
Program Introduction
Master performance-sensitive modern C++ in an intensive 4-week advanced course for experienced programmers in Uganda and across Africa. The course concentrates on the skills that distinguish strong C++ engineers: precise lifetime and ownership reasoning, move semantics, safe library interfaces, constrained templates, compile-time programming, concurrency, the C++ memory model, profiling and evidence-based optimisation. You will use professional tools to test, benchmark, analyse and harden code while working on systems-oriented scenarios such as payment batches, transport data, engineering workloads and device telemetry. The emphasis is safe, maintainable C++20 with selected, well-supported C++23 facilities—not clever syntax for its own sake. There is no web development. Your final project must meet measurable correctness, throughput, latency and memory goals and explain how profiling evidence guided each optimisation.
Key Features & Benefits
• Intensive 4-week advanced C++20 pathway with selective C++23 features • Deep coverage of lifetime, ownership, move semantics and safe API design • Practical templates, concepts and compile-time programming • Correct multithreading, atomics and memory-model reasoning • Profiling, benchmarking and cache-aware performance optimisation • Sanitizers, static analysis and reliability-focused engineering • Africa-relevant systems capstone with measurable performance targets • No web development or low-value language trivia
Real-World Applications
Learners can use the skills from this course to:
• Develop high-performance components for payment, banking and financial systems. • Build efficient telecom, networking and data-processing software. • Write reliable software for embedded devices, IoT gateways, robotics and industrial systems. • Develop simulation, scientific, geospatial and engineering applications. • Optimise game-engine, media-processing and desktop application components. • Work on performance-critical local, regional or remote C++ engineering teams. • Review unsafe or slow legacy C++ and modernise it systematically. • Prepare for advanced C++ systems-design, concurrency and performance interviews.
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)
Advanced
Upper Secondary · University · General Public
What you will learn
- By the end of this advanced C++ programming course, the learner will be able to:
- Reason precisely about value categories, copy/move operations, lifetime and ownership.
- Apply the rule of zero and implement custom resource types only when necessary.
- Design type-safe generic libraries using templates, concepts and compile-time evaluation.
- Use ranges and modern standard-library facilities to express efficient data processing.
- Build correct concurrent programs with threads, tasks, mutexes and condition variables.
- Explain data races, deadlocks, atomic operations and the purpose of the C++ memory model.
- Profile CPU time, allocations and memory behaviour before optimising.
- Improve performance using cache-aware data layout, fewer allocations and appropriate algorithms.
- Harden C++ code with sanitizers, static analysis, fuzz-friendly design and warning-clean builds.
- Architect, benchmark, test and document a performance-sensitive C++20 application.
Modules
- 1
Lifetime, Value Categories and Move Semantics
Object lifetime and storage duration in depthlvalues, rvalues and referencesCopy and move construction/assignmentRule of zero, rule of five and strong invariants`std::move`, perfect forwarding and common misuseCopy elision and return-value optimisation**Lab:** Diagnose unnecessary copies in a transaction-processing pipeline - 2
Advanced RAII and API Design
Resource-owning types and custom deletersOwnership in public interfacesViews, spans and non-owning accessException-safety guaranteesType-safe domain modellingStable, minimal and testable library interfaces**Lab:** Design a safe binary-file or device-resource wrapper - 3
Templates, Concepts and Compile-Time Programming
Variadic templates and parameter packsConcepts and constrained overloads`constexpr`, `consteval` and compile-time validationTraits and type transformationsClear diagnostics and controlling template complexityWhen runtime polymorphism is the better design**Lab:** Generic, constrained statistics or units library - 4
Modern Data Processing and Performance Foundations
Advanced algorithms, ranges and viewsCustom iterators only when neededAllocation behaviour and allocator awarenessContiguous data, locality and cache effectsData-oriented design versus object-heavy designBenchmark design and avoiding misleading measurements**Lab:** Benchmark two representations of market or telemetry data - 5
Concurrency Fundamentals
Processes, threads, tasks and asynchronous work`std::jthread`, cooperative cancellation and task lifetimeMutexes, scoped locks and condition variablesShared state, contention and reducing critical sectionsDeadlock causes and preventionProducer–consumer design**Lab:** Concurrent sensor-telemetry or transaction-batch processor - 6
Atomics and the C++ Memory Model
Data races and happens-before reasoningAtomic operations and atomic typesMemory ordering at a practical, safety-first levelLock-free versus lock-based trade-offsFalse sharing and contentionThreadSanitizer and repeatable concurrency tests**Lab:** Correct a racy counter/queue and compare safe designs - 7
Profiling, Optimisation and Code Hardening
Establishing performance requirements and baselinesCPU, memory and allocation profilingAlgorithmic improvements before micro-optimisationCompiler optimisation levels and debug/release differencesSanitizers, static analysis and fuzz-friendly input boundariesUndefined behaviour and secure input handling**Lab:** Profile and harden an intentionally inefficient data processor - 8
Capstone: High-Performance African Systems Project
Build one project: concurrent payment-batch validator,transport-route engine, telemetry aggregator or engineering-data processorDefine throughput, latency, memory and correctness targetsApply safe ownership, generic components and controlled concurrencyAdd unit, integration and concurrency testsBenchmark, profile and document evidence-based improvementsPresent architectural decisions, limitations and next steps
Before you enroll
- Completion of Ellipkom’s intermediate C++ course or equivalent experience.
- Confident use of classes, composition, standard containers, iterators, algorithms and lambdas.
- Practical understanding of RAII, smart pointers, templates, exceptions and object lifetime.
- Ability to structure, build and unit-test a multi-file project with CMake.
- Basic understanding of data structures, Big-O notation and debugging.
- A laptop or desktop computer and 8–10 focused study hours per week for 8 weeks.
What you need
- Laptop or desktop computer; 8 GB RAM is recommended.
- A recent C++20-capable GCC, Clang or Microsoft Visual C++ compiler with useful C++23 support.
- Visual Studio Code, Visual Studio Community, CLion or another advanced C++ IDE.
- CMake and Git.
- Catch2 or GoogleTest for automated tests.
- AddressSanitizer, UndefinedBehaviorSanitizer and ThreadSanitizer where the operating system/compiler supports them.
- A profiler such as Linux `perf`, Valgrind/Callgrind, Instruments or Visual Studio Profiler.
- Google Benchmark or an equivalent microbenchmark library.
- clang-tidy or another C++ static-analysis tool.
- No web framework or browser development tool 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 Computer Vision & Image Recognition

Advanced Dart Programming & Concurrency for Africa

Advanced Firebase Backend Engineering for Africa
Quick Actions
Need Help?
Have questions about this program? Our team is here to help!