Getting started: a quick dip
Basic types and variables: being a variable
Functions: getting out of main
Classes and objects: a bit of class
Subclasses and superclasses: using your inheritance
Abstract classes and interfaces: serious polymorphism
Data classes: dealing with data
Nulls and exceptions: safe and sound
Collections: get organized
Generics: know your ins from your outs
Lambdas and higher-order functions: treating code like data
Built-in higher-order functions: power up your code
Coroutines: running code in parallel
Testing: hold your code to account
Leftovers: the top ten things (we didn't cover).