Advanced Kotlin Programming Online – Uganda & East Africa

Duration
4 weeks
Investment
UGX 500,000
Teaching
Live online
Program Introduction
Master advanced Kotlin programming and learn how to design reliable, reusable and efficient software components.
This advanced course is designed for experienced Kotlin learners and software developers in Uganda, East Africa and across Africa who want to progress from application programming to professional Kotlin language engineering.
The course explores advanced generics, variance, inline functions, delegated properties, coroutines, Flow, channels, domain-specific languages, annotations, reflection, Java interoperability, testing, performance and library design.
Learners will build advanced projects inspired by financial services, SACCO operations, tourism, education, agriculture, transport, data processing and enterprise software requirements.
By completing the course, learners will be able to design asynchronous applications, create reusable Kotlin libraries, test concurrent programs and build professional Kotlin/JVM solutions.
This course focuses exclusively on advanced Kotlin language and JVM engineering. It does not cover Android development, Jetpack Compose or mobile application design.
Key Features & Benefits
• Advanced Kotlin language training without Android development. • Advanced generic programming and type-system design. • Dedicated coroutine and structured-concurrency modules. • Practical Flow and channel exercises. • Kotlin DSL and type-safe builder development. • Delegated properties and reusable API design. • Advanced Java and Kotlin interoperability. • Professional Kotlin/JVM library development. • Testing of asynchronous and concurrent programs. • JVM performance and resource-management principles. • Static analysis and automated formatting. • Professional API documentation. • Uganda, East Africa and Africa-focused project scenarios. • Git-based advanced capstone portfolio. • Preparation for senior Kotlin and JVM development pathways. • Suitable for experienced developers and technical professionals.
Real-World Applications
• Learners can use advanced Kotlin skills to: • Develop reusable Kotlin/JVM libraries. • Build asynchronous business-processing applications. • Design transaction and validation engines. • Create data-processing and reporting pipelines. • Develop type-safe configuration systems. • Create Kotlin domain-specific languages. • Integrate Kotlin into existing Java systems. • Design software components for banks, SACCOs and fintech companies. • Build technology solutions for tourism, education and agriculture. • Develop transport and logistics data-processing systems. • Improve the quality and performance of existing Kotlin projects. • Test concurrent and asynchronous software. • Prepare for server-side Kotlin frameworks. • Contribute to open-source Kotlin projects. • Compete for advanced local and remote development opportunities. • Lead code reviews. • Mentor junior Kotlin developers. • Design internal developer tools. • Prepare for software architecture and technical leadership roles.
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 course, the learner will be able to:
- Apply advanced Kotlin generic programming and variance.
- Use inline functions and reified type parameters appropriately.
- Design reusable APIs using Kotlin’s type system.
- Use class delegation and delegated properties.
- Create asynchronous programs using suspending functions and coroutines.
- Apply structured-concurrency principles.
- Manage coroutine contexts, dispatchers and lifecycle.
- Handle coroutine cancellation and exceptions safely.
- Process asynchronous data streams using Kotlin Flow.
- Coordinate concurrent operations using channels.
- Create type-safe Kotlin domain-specific languages.
- Apply annotations and reflection responsibly.
- Design Kotlin libraries that work effectively with Java.
- Test asynchronous and concurrent Kotlin code.
- Analyse Kotlin/JVM performance and resource use.
- Document public Kotlin APIs with KDoc.
- Apply static analysis and automated code-quality checks.
- Package and distribute reusable Kotlin/JVM components.
- Build and document a production-style advanced Kotlin project.
Modules
- 1
Advanced Kotlin Type System
Nullable and non-nullable type relationships.The Any type.The Unit type.The Nothing type.The Nothing? type.Smart casts.Smart-cast limitations.Type aliases.Function types with receivers.Definitely non-nullable types.Representing valid and invalid program states through types. - 2
Advanced Generics
Generic type relationships.Invariance.Declaration-site variance.Covariance with out.Contravariance with in.Use-site type projections.Star projections.Upper bounds.Multiple generic constraints.Generic type erasure.Designing reusable generic APIs. - 3
Inline and Reified Functions
Meaning of inline functions.Benefits and limitations of inlining.Using noinline.Using crossinline.Reified type parameters.Non-local returns.Function references.Functions with receivers.Functional API design.Readability and performance trade-offs. - 4
Advanced Functional Programming
Higher-order function design.Function composition.Pure functions.Immutability.Side effects.Closures.Partial application concepts.Functional error handling.Building reusable data-processing pipelines.Balancing functional and object-oriented approaches. - 5
Class Delegation
Review of delegation.Advanced class delegation.Replacing inheritance with delegation.Creating reusable delegated behaviours.Combining multiple delegated responsibilities.Testing delegated components.Delegation in library design. - 6
Delegated Properties
Standard property delegates.Lazy properties.Observable properties.Vetoable properties.Delegating to another property.Storing properties in maps.Creating custom property delegates.The getValue operator function.The setValue operator function.Delegate providers.Practical applications of delegated properties. - 7
Coroutine Foundations
Synchronous and asynchronous programming.Threads compared with coroutines.Suspending functions.Coroutine scopes.Coroutine builders.Using launch.Using async.Using await.Using coroutineScope.Structured concurrency.Designing asynchronous Kotlin applications. - 8
Coroutine Context and Dispatchers
Understanding coroutine context.Jobs and parent-child relationships.Coroutine dispatchers.Switching execution contexts.CPU-intensive operations.Input and output operations.Custom coroutine contexts.Debugging coroutine execution.Choosing appropriate dispatchers. - 9
Coroutine Cancellation and Lifecycle
Coroutine lifecycle.Cooperative cancellation.Cancelling coroutines.Cancellation checks.Timeouts.Cleaning up resources.Non-cancellable cleanup.Supervisor jobs.Supervisor scopes.Preventing abandoned background operations. - 10
Coroutine Exception Handling
Exception propagation.Exceptions in launch.Exceptions in async.Coroutine exception handlers.Cancellation exceptions.Aggregating multiple failures.Supervisor-based error isolation.Designing reliable asynchronous error handling.Testing coroutine failures. - 11
Shared State and Concurrency Safety
Shared mutable state.Race conditions.Synchronisation.Mutexes.Atomic operations.Thread confinement.Immutability in concurrent programs.Protecting shared resources.Designing concurrency-safe components.Identifying and preventing data corruption. - 12
Kotlin Flow Fundamentals
Meaning of asynchronous streams.Cold streams.Creating flows.Emitting flow values.Collecting flow values.Flow cancellation.Transforming flows.Filtering flows.Terminal flow operations.Building asynchronous processing pipelines. - 13
Advanced Flow Operations
Combining flows.Buffering.Conflation.Flattening flows.Flow context.Flow exception handling.Flow completion.SharedFlow.StateFlow.Hot and cold stream differences.Testing Flow-based programs. - 14
Kotlin Channels
Meaning and purpose of channels.Sending and receiving values.Buffered channels.Unbuffered channels.Closing channels.Channel cancellation.Producer-consumer patterns.Fan-out.Fan-in.Channel pipelines.Selecting between channel operations.Choosing between channels and Flow. - 15
Kotlin Domain-Specific Languages
Meaning of a domain-specific language.Function literals with receivers.Builder patterns.Nested builder structures.Operator overloading.Infix functions.The invoke convention.Type-safe builders.DSL markers.Restricting receiver scope.Designing readable Kotlin DSLs.Testing domain-specific languages. - 16
Annotations
Declaring custom annotations.Annotation parameters.Annotation targets.Annotation retention.Reading annotation information.Applying annotations to classesproperties and functions.Annotation use cases.Annotation-driven validation concepts.Designing maintainable annotation-based features. - 17
Kotlin Reflection
Class references.Callable references.Property references.Function inspection.Constructor inspection.Reading annotations at runtime.Kotlin reflection on the JVM.Java reflection interoperability.Reflection-based mapping and validation.Performance and maintenance considerations.Situations where reflection should be avoided. - 18
Advanced Capstone Project
Suggested projects include:Concurrent transaction-processing engine.Asynchronous tourism inventory aggregator.SACCO transaction-validation library.Kotlin data-import and transformation pipeline.Concurrent school-results processing service.Reusable financial-calculation library.Agricultural market-data processor.Java-compatible Kotlin business-rules library.Asynchronous command-line reporting system.Transport scheduling and data-processing engine.Multi-source inventory synchronisation system.
Before you enroll
- Learners enrolling in this advanced course should have completed Intermediate Kotlin Programming on Ellipkom or possess equivalent knowledge and practical experience.
- Learners should be able to:
- Create structured Kotlin/JVM projects.
- Configure Kotlin projects using Gradle.
- Write functions, classes, interfaces and extension functions.
- Apply object-oriented and functional-programming principles.
- Work confidently with collections, sequences and lambda expressions.
- Create generic classes and generic functions.
- Handle exceptions and operation results.
- Read from and write to files.
- Write and run automated unit tests.
- Use Git and GitHub for version control.
- Read technical documentation independently.
- Investigate and solve unfamiliar programming problems.
- Basic knowledge of threads or concurrent programming is recommended but not compulsory.
- Android-development experience is not required.
What you need
- Laptop or desktop computer suitable for professional software development.
- IntelliJ IDEA Community or Ultimate Edition.
- Compatible current Java Development Kit.
- Kotlin/JVM.
- Gradle using Kotlin DSL.
- kotlinx.coroutines.
- kotlin.test or JUnit.
- Git.
- GitHub or another repository-hosting platform.
- Terminal or command-line environment.
- Static-analysis tool such as Detekt.
- Code-formatting tool such as ktlint.
- Dokka or another KDoc-compatible documentation tool.
- IntelliJ profiler or another JVM profiling tool, where available.
- Stable internet connection.
- Active Ellipkom learner account.
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!