Master Kotlin from basics to advanced features, building a strong foundation for Android and beyond
Dive into Kotlin: Modern, concise, and powerful
Kotlin is Google's preferred language for Android development. It's interoperable with Java, safer with null safety, and more expressive with functional features.
Kotlin Basics and Syntax
Foundation concepts, basic syntax, and getting started with Kotlin
2 weeks
- play_circleKotlin Introduction and Setup (K2 compiler, IntelliJ/AS)
- play_circleVariables and Data Types
- play_circleval vs var and Immutability
- play_circleString Templates and Operations
- play_circleBasic Input/Output Operations
- play_circleComments and KDoc Basics
- articleKotlin vs Java (syntax & semantics quick tour)
- assignmentPractice: Basic Kotlin Programs
Control Flow and Functions
Control structures, function declarations, and program flow
1.5 weeks
- play_circleif Expressions and when Statements
- play_circleLoops: for, while, do-while
- play_circleRanges and Progressions
- play_circleFunctions: parameters, defaults, named args
- play_circleSingle-Expression Functions
- articleReturn and Jump Expressions
- assignmentPractice: Control Flow Exercises
Null Safety and the Type System
Kotlin's null safety and core type-system features
1.5 weeks
- play_circleNullable vs Non-nullable Types
- play_circleSafe Calls, Elvis, and let
- play_circleNot-null Assertion (!!) - why to avoid it
- play_circleSmart Casts and is-checks
- play_circleScope Functions: run, with, apply, also
- play_circleType Checking & Casting, Nothing/Unit/Any quick tour
- articleNull-Safety Best Practices
- assignmentPractice: Null-Safety Implementation
Object-Oriented Programming
Classes, objects, inheritance, and OOP principles in Kotlin
2.5 weeks
- play_circleClasses and Objects Basics
- play_circlePrimary & Secondary Constructors; init
- play_circleProperties and Custom Accessors
- play_circleInheritance, open/final, and Overriding
- play_circleAbstract Classes and Interfaces (incl. sealed interfaces)
- play_circleVisibility Modifiers
- play_circleData Classes & Data Objects (Kotlin 1.9+)
- play_circleSealed Classes & Exhaustive when
- play_circleObject Declarations, Companion Objects
- articleNested and Inner Classes
- assignmentPractice: OOP Design Patterns
Collections and Data Structures
Working with collections, sequences, and data manipulation
2 weeks
- play_circleArrays and Array Operations
- play_circleLists: Mutable vs Read-only
- play_circleSets and Maps Overview
- play_circleCollection Operations: filter/map/reduce
- play_circleSequences for Lazy Evaluation
- play_circleGrouping, Partitioning, Windowing
- play_circleSorting and Searching
- play_circleCustom Collection Operations
- articlePerformance Considerations & immutability tips
- assignmentPractice: Data Processing Pipeline
Functional Programming
Functional concepts, higher-order functions, and inline performance
2 weeks
- play_circleHigher-Order Functions & Function Types
- play_circleLambdas & Anonymous Functions (with receiver)
- play_circleClosures and Captured Variables
- play_circleinline/noinline/crossinline & performance
- play_circleFunction Composition & Partial Application
- play_circleTail Recursion (tailrec)
- articleFunctional Patterns in Kotlin (Option/Result style)
- assignmentPractice: FP Challenges
Exception Handling and Error Management
Exceptions, Result type, and defensive programming
1 week
- play_circleException Hierarchy in Kotlin
- play_circletry/catch/finally Patterns
- play_circleThrowing & Custom Exceptions
- play_circleResult & runCatching; error mapping
- play_circleBest Practices (checked vs unchecked mindset)
- articleDefensive Programming Techniques
- assignmentPractice: Robust Error Handling
Generics and Type Parameters
Generic programming, constraints, and variance
1.5 weeks
- play_circleGeneric Classes and Functions
- play_circleType Parameters and where-Constraints
- play_circleVariance: in/out (use-site & declaration-site)
- play_circleStar Projections & Type Projections
- play_circleReified Type Parameters & inline
- play_circleType Inference tips & pitfalls
- articleBest Practices with Generics
- assignmentPractice: Generic Data Structures
Coroutines and Async Programming (Language Intro)
Language-level intro so you can read coroutine code; the full deep-dive is a separate course.
1 week
- play_circleCoroutines Fundamentals (suspend, builders, scopes)
- play_circleDispatchers & withContext (overview)
- play_circleFlows at a Glance (cold vs hot)
- articleExceptions & Cancellation - quick rules
- assignmentPractice: Async tasks with structured concurrency
Advanced Language Features
Modern Kotlin features you’ll actually use
2 weeks
- play_circleExtension Functions & Properties
- play_circleOperator Overloading (do’s & don’ts)
- play_circleDelegated Properties & patterns (lazy, observable, vetoable)
- play_circleType Aliases & Destructuring
- play_circleValue Classes (a.k.a. inline classes) + @JvmInline
- play_circleContracts (opt-in): callsInPlace, returns
- articleContext Parameters (replacing context receivers) - status & examples
- play_circleAnnotations & Annotation Processing (kapt/ksp overview)
- assignmentPractice: Advanced Feature Implementation
DSL Creation and Metaprogramming
Type-safe builders, receivers, and @DslMarker
1.5 weeks
- play_circleDSL Design Principles
- play_circleFunction Literals with Receiver
- play_circleType-Safe Builders & nested scopes
- play_circleDSL Scope Control with @DslMarker
- play_circleHTML/SQL DSL Examples
- articleDSL Testing & Docs
- assignmentPractice: Custom DSL Development
Reflection and Runtime Features
Kotlin reflection API and runtime type info
1 week
- play_circleReflection Basics & KClass
- play_circleProperty & Function Reflection
- play_circleCallable References
- play_circleRuntime Annotation Processing (brief)
- play_circleReflection Performance & alternatives
- articleReflection Use Cases & pitfalls
- assignmentPractice: Reflection-Based Utilities
Testing in Kotlin
Testing strategies and frameworks
1.5 weeks
- play_circleUnit Testing Fundamentals
- play_circleJUnit 5 with Kotlin
- play_circlekotlin.test & Assertions
- play_circleMocking with MockK
- play_circleProperty-Based Testing (Kotest/quickcheck)
- play_circleTesting Coroutines (pointer to the full course)
- articleTDD workflow in Kotlin
- assignmentPractice: Comprehensive Test Suite
Best Practices and Code Quality
Conventions, performance, and professional practices
1 week
- play_circleKotlin Coding Conventions & Style
- play_circleStatic Analysis with Detekt & ktlint
- play_circlePerformance: allocations, boxing, inline/value classes
- play_circleMemory & GC basics (JVM/Native notes)
- play_circleOpt-in APIs: @RequiresOptIn / @OptIn and stability levels
- articleKotlin Evolution & K2 Migration Tips
- assignmentCapstone: Advanced Kotlin Application