Master Kotlin from hello world to internals
Take the ONLY Kotlin course you need to confidently use it in any environment - Android, KMP, backend or even web.
– This course is for anyone wanting to write efficient & smart Kotlin code –

You want to…
- ... learn Kotlin from the first hello world up to understanding its internals?
- ... confidently write efficient Kotlin code for Android, Kotlin Multiplatform, backend or web?
- ...always know which Kotlin language feature is the best to achieve what you want?
- … take a deeper look at Kotlin than the official docs give you?
- … master OOP (object-oriented programming) in software development to gain a skill relevant even across fields?
Who is this course for?
Absolute Beginners
Even if you are completely new to coding and the Kotlin world, this Masterclass will help you learn everything needed to apply it on a more advanced level.
Intermediate Developers
You already know the fundamentals of Kotlin? No problem!
This Masterclass is structured into a beginner and advanced part. In the advanced part you will go much deeper into all topics you currently just know on the surface - the compiler, generated bytecode, advanced language features, and more.
Interview Prep
Questions about Kotlin language features are among the most common questions in Android & Kotlin coding interviews.
With this Masterclass, you will confidently nail any Kotlin-related question.

Philipp Lackner has over 14 years of experience in the software field. Over the past years, he built a following of over 250,000 developers on social media who trust his work. With over 25,000 sold copies of his courses and 1,000h+ spent for teaching Android concepts, he already helped hundreds of thousands people to learn practical skills they can immediately apply.
He has a degree in computer science, however it didn’t go as expected. The amount of theory that was taught in university made him think about a better approach to learn what is really needed in the real world. Over time, Philipp found mentors who taught him exactly that in a practical setting. That was the game changer for his career.
After having worked for dozens of companies around the globe as a consultant, Philipp now wants to teach other Kotlin developers what really counts for becoming an outstanding developer in today’s competitive industry.
Of created Android content
Enrolled students
Years of software dev

The Basics

Functions & Lambdas

Fundamental Data Structures

Object-Oriented Programming

Generics

Kotlin’s Type System

Reflection

The Kotlin Compiler

Kotlin Interop


These 200+ Kotlin videos are waiting for you

- Your guide through the course
- What even is Kotlin?Installing
- IntelliJ
- Project creation
- IDE overview
- Console application basics
- The main function
- Your first hello world program
-
- Binary number crash course
- What is a variable?
- var, val & the assignment operator
- Whole numbers (Byte, Short, Int, Long)
- Floats & Doubles
- Booleans
- Characters
- Strings
- String templates
- Escaping characters
- Triple quote strings
- Naming conventions
- Constants
- Accepting user input
- The null value
- Null-safety
- Non-null assertion operator (!!)
- The Elvis operator
- The null-safety operator (?.)
- Arithmetics with nullables
- if and else statement
- Nullables in if-conditionselse
- if & FizzBuzz game
- if-statement as an expression
- when expressionwithout subject
- when expression with subject
- when with type-checks
- when as an expression
-
- Arrays & indices
- Typed arrays
- Byte arrays
- 2D arrays
- Strings are arrays!
-
- What is a collection?
- Read-only lists
- Mutable lists & Array lists
- The in operator
- Set & HashSet
- Map & HashMap
- Ranges
- ..<, downTo & step
- when expression with ranges
-
- While loop
- For loop
- Iterables & for each loop
- Do while loop
- Nested loops
- Break & continue
- Labels
- What is a function?
- Normal functions
- Function parameters
- Functions with return values
- Return without a value & early returns
- Default parameters
- Named parameters
- Extension functions
- Function overloading
- vararg keyword
- Recursion
- Function naming convention
-
- What is an exception?
- Catching exceptions with try/catch
- The finally clause
- Throwing exceptions
- Try/catch as an expression
- Throwable, Error & Exception
-
- What is a lambda function?
- Constructing a lambda function
- Anonymous functions
- Lambdas return the last line!
- Lambdas with a receiver type
- The invoke operator
- What are scope functions?
- Apply
- Run
- With
- Let
- Also
-
- What is OOP and an object?
- Normal class & member variables
- Constructors & init
- Member functions
- Secondary constructors
- Inheritance
- Abstract classes
- Default implementations & the super keyword
- this keyword in a class
- toString() function
- equals() function
- hashCode() function
- Getters
- Setters
- Initialization order of classes
- Visibility modifiers
- The safe cast operator (as?)
- Smart casting
- The lateinit keyword
- data classes
- Destructuring
- Encapsulation
- Explicit backing fields
- Interfaces
- Interfaces vs. abstract classes
- Sealed class
- Sealed interface
- Enum class
- Objects & data objects
- Enum classes vs. sealed classes
- Companion objects
- Anonymous classes
- Nested and inner classes
- References vs. values
-
- What are generics?
- Generics for functions
- Generics for classes
- Importing packages
- Import aliases
- Importing a library
- Modules & the internal keyword
- The 3 types of collection operations
- Terminal operations #1 - Aggregations
- Terminal operations #2 - Element access
- Terminal operations #3 - Reductions
- Terminal operations #4 - Conversions
- Transform operations #1 - Mapping
- Transform operations #2 - Filtering
- Transform operations #3 - Sorting
- Transform operations #4 - Grouping / partitioning
- Side-effect operations - forEach & onEach
-
- How the Kotlin Compiler works
- K2
- Kotlin JVM & Bytecode
- Inline functions
- Non-local returns, break & continue
- crossinline keyword
- noinline keyword
- Builder & DSL functions
- Infix functions
- Backtick function names
- Operator functions
- Nested functions
- What is reflection?
- Adding reflection to a project
- Practical reflection example
- Callable references
- Property references
- Constructor references
- The downsides of reflection
-
- Annotation classes & targets
- @JvmStatic
- Value classes
- Functional interfaces & SAM
- Class delegation
- Delegated properties
- Typealiases
- Triple equals operator
- Properties vs. backing fields
- Context parameters
-
- Type erasure & star projection
- Type constraints & where keyword
- reified keyword
- Passing around class references
- Covariance
- Contravariance
-
- The Nothing type
- Platform types
- Type boxing
-
- Regular expressions
- Sequences
-
- Writing good inline comments
- TODO comments & custom comments
- Doc comments & writing good documentation
-
- What do these targets define?
- Kotlin/Native
- Kotlin/JS
- Kotlin/Wasm
-

“Becoming a world-class developer starts at mastering the fundamentals. Most people sadly skip them in favor of the shiniest new technologies. Those shiny objects however aren't going to pay your salary.”

Results & case studies from our students
Martin Kiper convinced his interviewers thanks to Philipp’s courses.
- Felt lost in his own projects
- Didn't feel confident in Android interviews
- Confidently nailing coding interviews
- Feels confident about advanced topics like multi-module architecture
- Convinced employers of having a higher seniority than before
- Android developer in India
- No real hands-on experience on developing complex apps
- Low salary
- Got a well-paying job in Canada
- Understood the new company's tech stack the moment he joined
- Confidently develops real-world applications
- Wasn't able to build his own apps
- Felt insecure about architecture, Compose and more advanced topics
- Approaches projects for himself and clients confidently
- Truly understands the entire relevant Android tech stack
What people are saying
about Philipp’s courses
Real-world insights, structured learning, and expert mentorship that transform careers.
"This course brought me back on track really fast and Philipp really took care to convey general knowledge that can be applied on every Android project."
Matthias Kerat
"I have been using modularization for a long time, but I learned new cool stuff and tricks in your course that will change my way of thinking about how I should design my code."
Amer Hadi
"What’s unique about Philipp, that he cares about those who are looking for help, he answers to PM’s, I’ve never had experience like that."
Ozzy
"Your course let me also the opportunity to enhance my jetpack compose and unit test skills . So, I can consider me super satisfied. Please, don’t stop mentoring."
Vitanio Daniele
"Taking any of Philipp’s courses makes you go from 0 to almost 100 in understanding the concepts in no time. He explains the basics so well and teaches real world application use cases."
Messy Limes
"I’ve had struggles working with big projects, but after this course I feel so much more confident in my skills in building large robust apps."
Luka Luković
"I recently completed this course, and I couldn't be more thrilled with the experience! This course exceeded my expectations in every way. Philipp's real-world experience was evident. He covered everything from Ul design to integrating APls and managing databases,... Overall, this course was an incredible learning journey. I highly recommend it to anyone looking to start or advance their career in Android development!"
Erdem Kaya
"Philipp is an amazing developer who explains the most difficult topics in a way that's digestible and it stays with you. Everything is through practical examples. He's someone you'd want to go to, to understand something that you can't understand"
Omer Quadri
"This is one of the best courses for android development I have taken, not only we get to learn a lot but we also get an insight of where the industry is heading and how to approach problems and projects."
Jose Agustin Reinoso



