ProgrammingUpper Secondary · University · General PublicAdvanced C++ Course Uganda – Performance and Concurrency
Computer Programming
Upper Secondary · University · General Public

Advanced C++ Course Uganda – Performance and Concurrency

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.

`advanced C++ Uganda``C++ performance``C++ concurrency``multithreading``C++ memory management``C++ templates``C++20 concepts``systems programming Africa``embedded systems``fintech programming``C++ training East Africa``Ellipkom
Teaching format

Live online

Teaching language

English (Uganda)

Course difficulty

Advanced

Intended learners

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. 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. 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. 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. 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. 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. 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. 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. 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
Lower Secondary

Introduction to Object-Oriented Programming Concepts

4 weeksUGX 450,000
Advanced Rust Systems Programming Course in Uganda & Africa
Lower Secondary · Upper Secondary · University · General Public

Advanced Rust Systems Programming Course in Uganda & Africa

4 weeksUGX 450,000
Intermediate Dart Programming in Uganda & East Africa
Lower Secondary · Upper Secondary · University · General Public

Intermediate Dart Programming in Uganda & East Africa

4 weeksUGX 450,000
Intermediate Rust Programming Course in East Africa: Traits, Lifetimes & Concurrency
Lower Secondary · Upper Secondary · University · General Public

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

4 weeksUGX 450,000
Advanced PHP Programming – Professional Course in Uganda
Upper Secondary · University · General Public

Advanced PHP Programming – Professional Course in Uganda

4 weeksUGX 500,000
Data Structures and Algorithms with Python for Beginners in Uganda
Lower Secondary · Upper Secondary · University · General Public

Data Structures and Algorithms with Python for Beginners in Uganda

4 weeksUGX 450,000

More for Upper Secondary · University · General Public

 Dart Programming for Beginners in Uganda & East Africa
Lower Secondary · Upper Secondary · University · General Public

Dart Programming for Beginners in Uganda & East Africa

4 weeksUGX 450,000
Advanced C Systems Programming Course – Africa
Upper Secondary · University · General Public

Advanced C Systems Programming Course – Africa

4 weeksUGX 500,000
Advanced C# Programming in Uganda: Async, Generics & Performance
Upper Secondary · University · General Public

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

4 weeksUGX 500,000
Advanced Computer Vision & Image Recognition
Upper Secondary · University · General Public

Advanced Computer Vision & Image Recognition

6 weeksUGX 650,000
Advanced Dart Programming & Concurrency for Africa
Lower Secondary · Upper Secondary · University · General Public

Advanced Dart Programming & Concurrency for Africa

4 weeksUGX 500,000
Advanced Firebase Backend Engineering for Africa
Upper Secondary · University

Advanced Firebase Backend Engineering for Africa

4 weeksUGX 500,000

Quick Actions

Enroll Now

Need Help?

Have questions about this program? Our team is here to help!