Free Kotlin Course — Full Curriculum
23 comprehensive modules · 5 levels · Self-paced · Free forever
Beginner Level — Kotlin Fundamentals
No prior experience required. You will write and run your first Kotlin program in module 1 and understand Kotlin's core null safety model by module 2.
-
01Introduction to Kotlin
- History of Kotlin — JetBrains, open-source, Google's official Android language
- Kotlin 2.0: K2 compiler, performance improvements, new features
- Kotlin vs Java — conciseness, null safety, coroutines, interoperability
- Setting up: IntelliJ IDEA Community Edition and Android Studio
- Running Kotlin: REPL, command line, IDE, Kotlin Playground online
- Your first Kotlin program: main(), print, println
-
02Basic Syntax and Data Types
- val (immutable) vs var (mutable) — Kotlin's key variable distinction
- Basic types: Int, Long, Double, Float, Boolean, Char, String
- Any, Unit (like void), Nothing (for unreachable code)
- Type inference: Kotlin deduces types automatically
- Nullable types: String vs String? — null safety at compile time
- String templates: "Hello $name" and "${user.firstName}"
-
03Operators and Expressions
- Arithmetic, relational, logical, assignment operators
- Safe call operator (?.) — access nullable values without crashing
- Elvis operator (?:) — provide default when null
- Non-null assertion (!!) — when you are certain a value is non-null
- Operator overloading in Kotlin (plus, minus, times, compareTo)
- Bitwise and infix operators
-
04Control Flow Statements
- if as an expression — returns a value in Kotlin
- when expression — Kotlin's powerful replacement for switch/case
- when with sealed classes for exhaustive handling
- for loops with ranges: for (i in 1..10), downTo, step, until
- while and do-while loops, break, continue, and labeled jumps
- Smart casts: after null/type checks, Kotlin auto-casts the variable
- 05Functions
Intermediate Level — Core Kotlin Concepts
Collections, OOP, data classes, and sealed classes — the Kotlin features used in every real project, from Android apps to backend APIs.
-
06Collections and Arrays
- Immutable vs mutable collections: listOf() vs mutableListOf()
- List, MutableList, Set, MutableSet, Map, MutableMap
- Array and IntArray — when to use arrays vs lists
- Collection operations: filter, map, reduce, fold, any, all, none
- Advanced: groupBy, flatMap, zip, sortedBy, associateBy
- Sequences: lazy evaluation for large collection processing
- 07Classes and Objects
-
08Inheritance and Polymorphism
- open keyword — Kotlin classes are final by default
- Extending classes and overriding methods and properties
- Abstract classes: abstract methods and properties
- Interfaces: default implementations, multiple interface implementation
- Smart casts with is checks and as/as? casting
- Delegation pattern with the by keyword
-
09Data Classes and Sealed Classes
- Data classes: auto-generated equals(), hashCode(), toString(), copy()
- Destructuring data classes: val (name, email) = user
- copy() function for immutable updates
- Sealed classes — closed hierarchies for exhaustive when expressions
- Sealed interfaces — more flexible sealed hierarchies in Kotlin 1.5+
- Enum classes — typed constant sets with properties and methods
-
10Null Safety and Exceptions
- Kotlin's type system: nullable (T?) vs non-nullable (T)
- Safe calls, elvis operator, and non-null assertion in depth
- let { } for null-safe code blocks
- Platform types: dealing with Java nullability in Kotlin
- try/catch/finally and try as an expression
- Kotlin's checked vs unchecked exceptions — no checked exceptions
Advanced Level — Functional and Modern Kotlin
Coroutines, Flow, lambdas, and extension functions — the Kotlin features that make it one of the most expressive and productive programming languages in 2026.
-
11Higher-Order Functions and Lambdas
- Function types: (Int, Int) -> String
- Lambdas: syntax, implicit it parameter, multi-line lambdas
- Trailing lambda syntax — how Kotlin DSLs work
- Higher-order functions: passing and returning functions
- Inline functions: why they exist and when to use them
- Function references: ::functionName, ::ClassName::method
-
12Extension Functions and Scope Functions
- Extension functions: adding methods to any class
- Extension properties: adding computed properties to existing classes
- Scope functions — the Kotlin developer's most-used tools:
- let { } — null safety + transform, run { } — compute a value
- with(obj) { } — group operations, apply { } — configure objects
- also { } — side effects, and choosing the right scope function
-
13Kotlin Coroutines
- What are coroutines? Lightweight threads, structured concurrency
- suspend functions — functions that can be paused and resumed
- CoroutineScope, GlobalScope, and structured concurrency
- launch { } for fire-and-forget, async { } for Deferred results
- Coroutine dispatchers: Dispatchers.Main, IO, Default, Unconfined
- Coroutine cancellation, timeouts (withTimeout), and exception handling
-
14Kotlin Flow
- What is Flow? Cold streams vs hot streams
- Flow builders: flow { emit() }, flowOf(), asFlow()
- Flow operators: map, filter, transform, onEach, debounce, combine, zip
- Collecting Flow with collect { } and terminal operators
- StateFlow: hot observable state holder — used in Android ViewModel
- SharedFlow: event broadcasting to multiple collectors
-
15Generics
- Type parameters: class Box<T>, fun <T> identity(value: T): T
- Variance: out (covariant producer), in (contravariant consumer)
- Upper bounds: <T : Comparable<T>>
- Star projection: List<*> when type is unknown
- Reified type parameters with inline functions — access T at runtime
- Generic constraints and where clauses
Professional Level — Kotlin Ecosystem
DSLs, Multiplatform, Android, Ktor backend, and testing — the full Kotlin ecosystem used by professional developers at JetBrains, Google, Netflix, and beyond.
- 16Kotlin Standard Library and DSLs
-
17Kotlin Multiplatform (KMP)
- What is KMP? Share code across Android, iOS, Web, Desktop, Server
- KMP project structure: commonMain, androidMain, iosMain
- expect/actual mechanism for platform-specific implementations
- Kotlin Multiplatform Mobile (KMM) for Android + iOS
- KMP stable (2024+): real-world production usage at Netflix, VMware
- Kotlin/WASM — targeting WebAssembly from Kotlin
-
18Android Development with Kotlin
- Kotlin-first Android development — Google's official recommendation
- Android Activities, Fragments, and lifecycle
- Jetpack Compose basics: composable functions, state, recomposition
- ViewModel with StateFlow for reactive UI state management
- Coroutines on Android: viewModelScope, lifecycleScope
- Jetpack libraries: Navigation, Room, Hilt DI — Kotlin overview
- 19Testing in Kotlin
- 20Best Practices and Coding Conventions
Optional Level — Specialized Kotlin Topics
Backend with Ktor, Kotlin/Native for native binaries, and Gradle Kotlin DSL for build configuration — specialized paths for specific career directions.
-
21Kotlin Backend Development with Ktor
- What is Ktor? JetBrains' asynchronous Kotlin web framework
- Setting up a Ktor project and defining routes
- Plugins: ContentNegotiation (JSON), Authentication, Logging
- Kotlinx.serialization for JSON serialization/deserialization
- JWT authentication and building a REST API with Ktor
- Kotlin with Spring Boot — overview of alternative backend path
- 22Kotlin/Native
- 23Kotlin Scripting and Build Tools
No account · No credit card · Works on any device · Free forever