Kotlin // 30-Tage-Plan

Von null zum Profi — hake jeden Tag ab wenn du fertig bist

🔥 0 Tage Streak

// Kotlin-Profi achieved!

Alle 30 Tage abgeschlossen. Du bist jetzt ein Kotlin-Entwickler.

0
Erledigt
30
Verbleibend
0%
Fortschritt
0
Streak
Gesamtfortschritt 0 / 30 Tage
Phase 1 · Tage 1–7 · Grundlagen & Setup
Tag 01 Warum Kotlin? Setup & erstes Programm

Kotlin kennenlernen, IntelliJ IDEA installieren, erstes "Hello World" schreiben. Verstehen warum Kotlin Java in vielen Bereichen ablöst und was die Vorteile der Sprache sind.

InstallationIntelliJ IDEAHello WorldKotlin vs Java
Full 2025 Kotlin Crash Course for Beginners — Philipp Lackner
IntelliJ installieren, erstes Kotlin-Projekt erstellen und "Hello, [dein Name]!" auf der Konsole ausgeben
Tag 02 Variablen, Datentypen & val vs var

val (unveränderlich) vs var (veränderlich), alle Basis-Datentypen (Int, String, Boolean, Double, Long), Type Inference. Kotlin macht hier vieles eleganter als Java.

val / varInt, String, BooleanType InferenceDatentypen
Philipp Lackner Crash Course — Variablen & Typen
Programm mit mindestens 5 verschiedenen Variablen verschiedener Typen schreiben und deren Werte ausgeben
Tag 03 String Templates & Null Safety

Eines der stärksten Features von Kotlin: Null Safety. Keine NullPointerExceptions mehr! Der ?. Safe-Call-Operator, der ?: Elvis-Operator und !! für bewusste NPE. Plus String-Templates mit $variable und ${ausdruck}.

Nullable Types?. Safe Call?: ElvisString Templates!!
Kotlin Full 9-Hour Course — Null Safety Kapitel (freeCodeCamp)
Funktionen schreiben die Null zurückgeben können und alle Fälle sicher mit ?., ?: und let behandeln
Tag 04 Kontrollfluss: if, when, Schleifen

if als Expression (gibt einen Wert zurück!), das mächtige when als Ersatz für switch, for-Schleifen mit Ranges (.., until, downTo, step), while und do-while.

when expressionfor / whileRangesif als Expression
Kotlin Course for Beginners — freeCodeCamp (Kontrollfluss-Abschnitt)
Einfachen Taschenrechner mit when-Expression bauen (+, -, *, / und Modulo)
Tag 05 Funktionen & Default-Parameter

Normale Funktionen, Single-Expression-Functions (fun add(a: Int, b: Int) = a + b), Default- und Named Parameters. Kotlin-Funktionen sind kürzer und expressiver als in Java.

funDefault-ParameterNamed ArgumentsSingle-Expression
Philipp Lackner Crash Course — Funktionen & Lambdas
5 verschiedene Funktionen schreiben: darunter eine Single-Expression, eine mit Default-Parametern und eine mit Named Arguments
Tag 06 Collections: Lists, Sets, Maps

Mutable vs Immutable Collections — listOf vs mutableListOf, setOf vs mutableSetOf, mapOf vs mutableMapOf. Iteration mit forEach und indices.

listOf / mutableListOfMapSetforEach
Learn Kotlin Programming — Collections (freeCodeCamp)
Kontaktliste als Map (Name → Telefonnummer) erstellen, alle Kontakte ausgeben und nach Name suchen
Tag 07 Woche 1 Recap & Mini-Projekt

Alles aus Woche 1 festigen. Kein neues Material — nur bauen und üben. Wenn etwas unklar ist, heute nochmal anschauen.

RecapMini-Projekt
Learn Kotlin in 12 Minutes — schneller Recap aller Basics
Mini-Projekt: To-Do-Listen-App auf der Konsole — Aufgaben hinzufügen, alle anzeigen, als erledigt markieren, löschen
Phase 2 · Tage 8–15 · Objektorientierte Programmierung
Tag 08Klassen & Objekte

Klassen erstellen, Primary Constructor, Properties definieren, Objekte instanziieren, init-Block. Kotlin-Klassen sind deutlich kompakter als Java-Klassen.

classPrimary ConstructorPropertiesinit
All Classes In Kotlin Explained — Philipp Lackner (2025)
Person-Klasse mit Name, Alter, E-Mail modellieren und eine Methode vorstellen() implementieren
Tag 09Data Classes & Destructuring

Data Classes: Kotlins Antwort auf Boilerplate. Automatisch generiertes equals(), hashCode(), toString() und copy(). Destructuring Declarations mit componentN().

data classcopy()DestructuringcomponentN()
All Classes In Kotlin Explained — Philipp Lackner
Data Classes für Buch, Autor, Verlag erstellen. copy() nutzen um geänderte Versionen zu erzeugen.
Tag 10Vererbung & Interfaces

Vererbung mit open/override (Klassen sind standardmäßig final!), abstrakte Klassen, Interfaces mit Default-Implementierungen, Smart Casts mit is/as.

open / overrideabstractinterfaceis / as
Kotlin Full Course — Vererbungs-Kapitel (freeCodeCamp)
Tier-Hierarchie: Tier → Säugetier → Hund/Katze. Interface "Sprechend" mit Methode lautGeben() implementieren.
Tag 11Sealed Classes & Enum Classes

Sealed Classes modellieren abgeschlossene Zustandsräume — perfekt für UI-States, Netzwerkergebnisse. Zusammen mit when wird jeder Fall erzwungen.

sealed classenum classwhen + sealedexhaustive when
All Classes In Kotlin Explained — Philipp Lackner
NetworkResult<T> als sealed class: Loading, Success(data: T), Error(message: String). Mit when alle Fälle behandeln.
Tag 12Object, Companion Object & Singletons

Singletons mit dem object-Keyword, statische Member mit companion object. Kotlin hat kein static — companion object ist der elegante Ersatz.

objectcompanion objectSingleton Pattern@JvmStatic
All Classes In Kotlin Explained — Philipp Lackner
Datenbank-Manager als Singleton mit object, und eine Factory-Methode über companion object implementieren
Tag 13Extension Functions & Properties

Bestehende Klassen erweitern ohne Vererbung — eines der beliebtesten Kotlin-Features. Extension Properties, Extension Functions auf Nullable Types.

fun Type.name()Extension Propertiesthis
Philipp Lackner Crash Course — Extension Functions
5 nützliche Extension Functions: String.isPalindrome(), List<Int>.average(), Int.isEven(), String.capitalizeWords() etc.
Tag 14Generics & Type Safety

Generische Klassen und Funktionen schreiben, in/out Varianz (Kovarianz/Kontravarianz), reified Type Parameters mit inline Functions.

<T> Genericsin / outreifiedinline fun
Philipp Lackner Crash Course — Generics
Generischen Stack<T> implementieren mit push(), pop(), peek() und isEmpty(). Dann mit verschiedenen Typen testen.
Tag 15OOP-Projekt: Mini-Bank

Alles aus Phase 2 in einem Projekt anwenden. Kein Tutorial-Follow-Along — nur selbst bauen!

Freies ProjektOOP Recap
Learn Kotlin Programming — freeCodeCamp (vollständiger Kurs als Referenz)
Bankkonto-System: Konten erstellen (Giro/Spar), einzahlen, abheben, überweisen, Kontostand. Sealed Classes für Transaktionsergebnisse nutzen.
Phase 3 · Tage 16–23 · Fortgeschrittene Konzepte
Tag 16Lambdas & Higher-Order Functions

Funktionen als Parameter übergeben und zurückgeben. Lambda-Syntax, it-Keyword, Function Types wie (Int) -> Boolean. Basis der funktionalen Programmierung.

LambdaHigher-Orderit(T) -> R
Philipp Lackner — Lambdas & Higher-Order Functions
Eigene myFilter, myMap und myReduce für Listen implementieren — ohne die eingebauten Funktionen zu nutzen
Tag 17Scope Functions: let, run, with, apply, also

Die 5 Scope Functions — eines der verwirrendsten aber mächtigsten Kotlin-Konstrukte. Wann was: let (nullable), apply (konfigurieren), also (Logging), run (Ergebnis), with (kein Receiver).

letrunwithapplyalso
Kotlin Scope Functions Explained — YouTube suchen
Alten Code aus Tag 8–14 refactoren: Null-Checks durch let ersetzen, Objekte mit apply konfigurieren
Tag 18Collections API: map, filter, fold, groupBy

Kotlins funktionale Collections-API ist riesig. map, filter, flatMap, groupBy, sortedBy, fold, reduce, zip, partition, associate — 1 Zeile statt 10.

map / filterflatMapgroupByfold / reducepartition
Learn Kotlin Programming — Collections API (freeCodeCamp)
100 Studenten-Liste: Alle mit Note ≥ 4 filtern, nach Klasse gruppieren, Notendurchschnitt pro Klasse berechnen
Tag 19Coroutines — Einführung

Async-Programmierung ohne Callbacks-Chaos. Coroutines sind leichtgewichtig und blockieren den Thread nicht. Basics: suspend fun, launch, delay, CoroutineScope, runBlocking.

suspend funlaunchdelayCoroutineScoperunBlocking
Kotlin Coroutines 101 — Google Android Conference
3 gleichzeitige "Downloads" mit Coroutines simulieren (delay). Zeige an, welcher zuerst fertig wird.
Tag 20Coroutines — async, await, Dispatcher

Parallele Ausführung mit async/await, Dispatchers.IO für I/O-Operationen, Dispatchers.Main für UI, withContext zum Wechseln, strukturiertes try-catch in Coroutines.

async / awaitDispatcherswithContexttry-catch
Kotlin Coroutines 101 — Google (Fortsetzung)
Daten von 2 simulierten APIs parallel mit async laden, auf beide warten mit await und Ergebnisse kombinieren
Tag 21Kotlin Flow

Flow ist wie Coroutines für Datenströme. Cold Flow vs Hot Flow, StateFlow (hält letzten Wert), SharedFlow, collect, map/filter auf Flow.

FlowStateFlowSharedFlowcollectCold vs Hot
How to Use Kotlin Flow Like a Pro — Droidcon 2024
Countdown-Timer mit Flow (tickt jede Sekunde von 60 runter) und einen Temperatur-Sensor Simulator als Hot Flow
Tag 22DSLs & Operator Overloading

Domain Specific Languages mit Lambda with Receiver bauen. Operatoren überladen mit operator fun. Zeigt die volle Ausdrucksstärke von Kotlin.

operator funDSL Builder@DslMarkerLambda with Receiver
Kotlin 9h Course — DSL & Operator Abschnitt (freeCodeCamp)
HTML-Builder DSL bauen: html { head { title("Test") } body { p("Hello!") } } — und Vector2D-Klasse mit + und * Operator
Tag 23Testing mit JUnit 5 & Kotest

Unit Tests in Kotlin schreiben — JUnit 5 mit Kotlin-Extensions und Kotest für ausdrucksstarke Assertions. Gute Tests sind ein Zeichen von Professionalität.

JUnit 5KotestshouldBe@TestMocking
Kotlin Unit Testing JUnit 5 — YouTube suchen
Tests für alle Funktionen aus dem Bank-Projekt (Tag 15) schreiben — Einzahlen, Abheben, Überweisen, Fehlerfall
Phase 4 · Tage 24–30 · Praxis & echte Projekte
Tag 24Kotlin für Android — Grundlagen

Kotlin ist die offizielle Sprache für Android. Android Studio einrichten, erste Activity, View-Binding, Button-Klick-Listener in Kotlin.

Android StudioActivityView BindingonClick
Kotlin für Android — Beginner to Advanced Playlist (2025)
Android-App erstellen die deinen Namen, ein Bild und einen Button zeigt. Button-Klick ändert den Text.
Tag 25Jetpack Compose Basics

Compose ist die moderne UI-Bibliothek für Android. Deklaratives UI mit @Composable-Funktionen — kein XML mehr! Column, Row, Text, Button, remember, mutableStateOf.

@ComposableColumn / RowremembermutableStateOf
Philipp Lackner — Jetpack Compose Tutorials (Kanal)
Counter-App mit Compose bauen: + und − Buttons, Zähler in der Mitte, Farbe wechselt ab 0 ins Rote
Tag 26ViewModel & State Management

MVVM-Architektur mit ViewModel und StateFlow. Der ViewModel überlebt Screen-Rotationen. collectAsStateWithLifecycle in Compose.

ViewModelStateFlowMVVMcollectAsState
Philipp Lackner — ViewModel & State in Compose
State der Counter-App aus Tag 25 in ein CounterViewModel mit StateFlow auslagern
Tag 27Netzwerk mit Retrofit & Coroutines

Daten aus dem Internet laden. Retrofit + Gson für JSON-Parsing + Coroutines suspend-Funktionen. Standard-Kombination für API-Calls in Kotlin.

Retrofitsuspend APIGson@GET / @POST
Philipp Lackner — Retrofit + Coroutines Tutorial
Wetter-App: Aktuelle Wetterdaten von OpenWeatherMap API laden und in Compose anzeigen
Tag 28Lokale Datenbank mit Room

Daten lokal speichern mit Room (SQLite-Wrapper). @Entity für Tabellen, @Dao für Queries, @Database als Einstiegspunkt. Room + Flow für reaktive Updates.

@Entity@Dao@DatabaseRoom + Flow
Philipp Lackner — Room Database Tutorial
To-Do-App aus Tag 7 um Room-Persistenz erweitern: Aufgaben überleben App-Neustart
Tag 29Dependency Injection mit Hilt

Hilt ist Googles offizielle DI-Lösung für Android. @Inject, @HiltViewModel, @Module, @Provides. DI macht Code testbarer, modularer und weniger abhängig.

@Inject@HiltViewModel@Module@Provides
Philipp Lackner — Hilt Dependency Injection
Hilt in die Wetter-App integrieren: Repository injizieren, ViewModel über @HiltViewModel bereitstellen
Tag 30Abschlussprojekt — vollständige App

Du kombinierst alles aus dem Plan: Compose UI, ViewModel, Coroutines, Flow, Retrofit, Room, Hilt, Clean Architecture. Das ist dein Beweis, dass du Kotlin kannst.

Alles!Clean ArchitectureMVVMGitHub
Philipp Lackner — Complete Android App from Scratch
News-Reader-App: Artikel von einer API laden, lokal mit Room cachen, nach Thema filtern, in einer LazyColumn anzeigen. Alles auf GitHub hochladen als Portfolio-Projekt!