Kotlin Complete Foundation
The language behind modern Android. Learn Kotlin properly before you touch an app, so the framework is the only new thing you are learning.
Most people learn Kotlin and Android at the same time, and end up unable to tell which problem belongs to which. That makes debugging miserable.
This course teaches Kotlin on its own first. You will understand null safety, data classes, collections and coroutines as language features, so that when you open Android Studio the only new thing is the framework.
Kotlin is also worth knowing beyond Android — it runs on the server with Ktor and Spring, and cross-platform with Kotlin Multiplatform.
Who this is for
- Beginners aiming at Android development
- Java developers moving to Kotlin
- Anyone joining our Mobile App Development track
What you need first
- A computer with at least 8 GB RAM (Android Studio is demanding)
- Basic programming concepts help but are not required
Tools you will use
By the end you can
- Write idiomatic Kotlin rather than Java with different syntax
- Use null safety to eliminate an entire category of crash
- Work fluently with collections and higher-order functions
- Model data with data classes and sealed classes
- Understand coroutines and structured concurrency
- Read Kotlin written by other people and know what is going on
8 modules, 36 lessons
Work through these in order. Each lesson is short enough to finish in one sitting and ends with something to build, not a quiz.
- 1
Getting Started
Set up a Kotlin environment and run your first code without Android in the way.
- Why Kotlin, and where it runsComing soon
- Installing IntelliJ IDEA and the Kotlin toolchainComing soon
- Your first Kotlin programComing soon
- Kotlin scratch files: experimenting fastComing soon
- 2
Language Basics
Values, types and the syntax you will use in every file you write.
- val and var: immutability by defaultComing soon
- Basic types and type inferenceComing soon
- Strings and string templatesComing soon
- if, when and expressions that return valuesComing soon
- Loops and rangesComing soon
- 3
Null Safety
Kotlin’s single best feature, and the reason it exists.
- The null problem Kotlin was designed to fixComing soon
- Nullable types and the safe call operatorComing soon
- The Elvis operator, let, and smart castsComing soon
- Why !! is almost always the wrong answerComing soon
- 4
Functions
Kotlin functions are more flexible than most languages. Use that.
- Defining functions and default argumentsComing soon
- Named arguments and readable call sitesComing soon
- Single-expression functionsComing soon
- Extension functionsComing soon
- Lambdas and higher-order functionsComing soon
- 5
Collections
Lists, maps and sets, plus the functional operations you will use constantly.
- Lists, sets and mapsComing soon
- Mutable versus read-only collectionsComing soon
- map, filter, reduce and friendsComing soon
- Sequences and when they matterComing soon
- Practice: transforming a real datasetComing soon
- 6
Classes and Objects
Modelling your domain with Kotlin’s class system.
- Classes, constructors and propertiesComing soon
- Data classes: equality and copying for freeComing soon
- Interfaces and inheritanceComing soon
- Sealed classes and exhaustive whenComing soon
- object, companion object and singletonsComing soon
- 7
Coroutines
Asynchronous code that reads like ordinary code — essential for Android.
- Why asynchronous code exists, with a real exampleComing soon
- suspend functions and the basicsComing soon
- Coroutine scopes and dispatchersComing soon
- Structured concurrency and cancellationComing soon
- An introduction to FlowComing soon
- 8
Testing and Tooling
Gradle, tests and the habits that carry into a real project.
- Gradle basics for Kotlin projectsComing soon
- Unit testing with JUnit and KotlinComing soon
- Structuring a Kotlin projectComing soon
Learning this with a mentor is faster
Our internship programme is free and fully remote. You get this curriculum, real project work, and code review from working developers.