Intermediate Go Programming in Africa: APIs & Concurrency

Duration
4 weeks
Investment
UGX 500,000
Teaching
Live online
Program Introduction
Develop intermediate Go programming skills for backend, cloud and infrastructure work in Uganda and across Africa. This course focuses on the language features and standard-library capabilities that make Go valuable for reliable services: goroutines, channels, context, synchronisation, generics, HTTP, JSON, testing, fuzzing and performance analysis. Learners build without a web framework so they understand the Go language beneath production systems. Regionally relevant exercises lead to a tested service that can support agriculture, logistics, education, healthcare or growing African businesses.
Key Features & Benefits
• Language-first approach using Go’s concurrency model and standard library. • No Android development and no framework dependency. • Practical API development without hiding core behaviour behind third-party packages. • Safe concurrency with cancellation, timeouts, race detection and leak prevention. • Security-minded testing through fuzzing and dependency vulnerability checks. • Performance work guided by benchmarks and profiling rather than guesswork. • Uganda- and Africa-relevant capstone options across high-impact sectors. • Portfolio evidence covering service design, testing, documentation and code quality. • Strong preparation for backend, cloud, platform and DevOps engineering pathways.
Real-World Applications
Learners can use the skills from this course to:
• Build lightweight backend APIs for African startups, SMEs and public-service projects. • Create concurrent data-processing and automation services. • Develop reliable integrations for agriculture, logistics, education, finance and healthcare systems. • Write internal tools and services for cloud and DevOps teams. • Improve the tests, performance and security of existing Go codebases. • Contribute more effectively to open-source Go projects. • Prepare for Go backend developer and junior cloud-engineering interviews. • Progress toward microservices, distributed systems and platform engineering.
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
Lower Secondary · Upper Secondary · University · General Public
What you will learn
- By the end of this course, the learner will be able to:
- Design idiomatic package boundaries and maintainable Go APIs.
- Use goroutines and channels to coordinate concurrent work.
- Apply `select`, cancellation, timeouts and `context` safely.
- Protect shared state with mutexes and other synchronisation tools.
- Detect and correct data races with Go’s race detector.
- Apply generics when they improve reuse without reducing clarity.
- Build JSON HTTP services using Go’s standard library.
- Implement routing, middleware, validation and consistent error responses.
- Write unit, HTTP, integration-style and fuzz tests.
- Use benchmarks and profiling evidence to investigate performance.
- Check Go dependencies for known vulnerabilities.
- Build and document a tested intermediate Go service for an African business or public-service scenario.
Modules
- 1
Idiomatic design for larger Go programs
Package responsibilities and dependency directionPublic APIs and exported typesComposition over inheritanceDependency injection with functions and small interfacesFunctional options where appropriateAvoiding package cycles and “utility” packagesRefactoring for clarity rather than abstractionReviewing code with Go conventions - 2
Goroutines and channel fundamentals
Concurrency versus parallelismStarting and stopping goroutinesUnbuffered and buffered channelsChannel directionClosing channels and ranging over resultsAvoiding goroutine leaksWorker and producer-consumer patternsPractice project: concurrent regional data-file processor - 3
Coordination, cancellation and shared state
`select` and non-blocking coordinationTimeouts and timersCancellation with `context`Propagating request-scoped values responsibly`sync.WaitGroup`, `sync.Mutex`, `sync.RWMutex` and `sync.Once`Choosing channels versus mutexesUsing the race detectorPractice project: cancellable multi-source report generator - 4
Generics and reusable algorithms
Type parameters and constraintsGeneric functionsGeneric typesThe `comparable` constraintType approximationWhen interfaces are a better choiceWhen generics add unnecessary complexityPractice project: typed filtering, mapping and aggregation helpers - 5
HTTP and JSON with the Go standard library
HTTP clients and serversHandlers and routing with `net/http`Request methods, headers and status codesEncoding and decoding JSONInput limits and validationConsistent success and error responsesServer timeoutsGraceful shutdown conceptsPractice project: local-service directory API - 6
Middleware and service structure
Handler compositionLogging and request identifiersPanic recovery at service boundariesBasic cross-origin request conceptsConfiguration through environment variablesSeparating transport and business logicRepository-style boundaries without a database dependencyAPI documentation and runnable examplesPractice project: extend an SME or public-information service - 7
Advanced testing, security and performance
HTTP handler tests with `httptest`Test doubles using functions and small interfacesIntegration-style testsFuzz testing and edge-case discoveryBenchmarks and allocation reportsCPU and memory profilingAvoiding premature optimisationDependency and vulnerability checks with `govulncheck`Testing concurrent code and checking for races - 8
Intermediate capstone service
Defining a small service contractDesigning packages and interfacesBuilding CRUD-style JSON endpointsAdding validation and structured errorsApplying concurrency to a justified workloadImplementing cancellation and server timeoutsWriting handler, fuzz and business-logic testsRunning race, vet and vulnerability checksPublishing setup instructions, endpoint examples and technical decisions
Before you enroll
- Completion of the two Ellipkom beginner Go courses, or equivalent practical experience.
- Confidence with Go modules, packages, functions, structs, methods, pointers and interfaces.
- Ability to read and write files, handle errors and work with JSON.
- Ability to write and run basic unit tests.
- Familiarity with terminal commands and Git.
- Basic understanding of HTTP requests and responses is helpful, but not required.
What you need
- A Windows, macOS or Linux computer.
- The current stable Go toolchain.
- Visual Studio Code with the official Go extension, or another code editor.
- A terminal and Git.
- An HTTP client such as `curl`, Bruno or Postman; `curl` is sufficient.
- A GitHub account is recommended for the capstone portfolio.
- No web framework, paid database or cloud platform 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 Lower Secondary · Upper Secondary · University · General Public

Dart Programming for Beginners in Uganda & East Africa

Advanced Dart Programming & Concurrency for Africa

Advanced iOS Engineering: Secure, Offline-First Apps for Africa

Advanced NumPy for High-Performance Data Science in Africa

Advanced Pandas Course for Scalable Data Pipelines in Africa

Advanced Python Programming Course in Africa
Quick Actions
Need Help?
Have questions about this program? Our team is here to help!