
Explore loops in Kotlin, including repeat and while, using examples like temperature changes, a guessing game with random numbers, and age-based cinema rules.
Master the char data type in Kotlin, using single quotes. Explore ascii codes and print A to Z with loops and ranges, using isLetter and isDigit for password validation.
Master Kotlin basics by comparing do-while with while loops, avoiding code duplication, and using split to parse strings into tokens for a simple calculator expression.
Discover the fundamentals of object oriented programming by learning how classes describe data types like int, and how objects or instances realize those classes in code.
Explore functions with parameters by declaring names and types, passing single or multiple arguments, and printing each action step via a coffee assistant example.
Explore upcasting, downcasting, and smart cast within an inheritance hierarchy, learning how parent and child types interact, when to cast, and how smart cast ensures safe access to members.
Explore polymorphism in Kotlin by upcasting workers to type and iterating a worker collection to call work, overriding behavior for director, assistant, and consultant while noting open, final, and any.
Remove elements from a mutable product card list in Kotlin by name, load cards from a file, and save updates back, using generics, smart casting, and simple file I/O.
Explore encapsulation in Kotlin by using a private backing field and an overridden getter to return a copy of a mutable collection, preventing external modification while preserving internal state.
Explore how Kotlin's data class copy method works, its generated parameters, and how overloading and parent-child method signatures prevent conflicts while enabling object copying with all four fields.
Use nullable salaries to compute total pay with null checks and the Elvis operator. Learn that Kotlin's unit is a singleton type used for methods that return nothing.
Explore exceptions in Kotlin by building and throwing arithmetic and number format exceptions, and master try catch blocks to gracefully handle division by zero and invalid input.
Link to the official documentation on scope functions https://kotlinlang.org/docs/scope-functions.html
Explore Kotlin map collections by deserializing a json dictionary into entry objects, using immutable and mutable maps for fast lookups, and implementing a phonebook example.
Master basics of multithreading in Kotlin and explore design patterns by moving from a single-threaded example to concurrent execution with thread, runnable, lambda, and Kotlin concurrent thread.
Explore how to implement a singleton in Kotlin in a multi-threaded environment by using synchronization blocks, locks, and double-check patterns to prevent race conditions.
Explore the Kotlin builder pattern by constructing a drink with a builder and producing an immutable drink, addressing multiple-parameter construction and default values.
Dependency for the junit library:
testImplementation("org.junit.jupiter:junit-jupiter-params:5.11.3")
Explore extending a Kotlin array list with add, add at index, remove by index, remove by value, contains, clear, and size, verified by tests.
Implement index bounds checks and index out-of-bounds exceptions in a Kotlin array list, and optimize element shifting with system array copy.
Implement a numbers linked list in Kotlin by building a node-based singly linked list with first and last references, supporting add, get, remove, contains, and index checks.
Interview presentation:
Show minutes and seconds in a timer, padded with zeros using String.format. Use an action listener for button clicks and simulate loading a book and author to illustrate async patterns.
Learn how to use the callback mechanism to run long operations on a background thread, keep the user interface responsive, and avoid blocking, while understanding callback hell and coroutines.
Learn to parallelize tasks with Kotlin coroutines by launching multiple loads, using join and join all to wait for completion, and replacing blocking sleep with delay.
Explore structured concurrency with a scope and a hierarchy of parent and child coroutine jobs, including daemon threads, runBlocking, and dispatchers, and observe cancellation behavior.
Load data from the network, convert json into a Kotlin data class via Kotlin serialization, handle unknown keys, and ensure safe, asynchronous access.
Learn to wire user input into a flow via channels, convert to a flow, and apply debounce to trigger searches after typing pauses, while exploring flow marbles and operators.
Demonstrates how the flow on operator switches upstream context in a Kotlin flow, showing dispatcher behavior, single-thread execution, and how downstream emissions remain on the original thread.
Project where we worked with collections:
Clarify inner versus nested classes in Kotlin, including anonymous inner classes and how they access outer properties. See concise examples with a display class, text field, button, and action listener.
Interview presentation:
Celebrate completing the Kotlin course and recognize that you know Kotlin very well, building a strong foundation for your programming career. Choose a direction and keep developing.
Hello everyone, and welcome to the Complete Kotlin Course: Zero to Job-Ready!
My name is Andrey Sumin.
This course is for anyone who wants to learn Kotlin—a modern language used to build Android apps, create server-side applications, and work on multiplatform projects. It’s designed so you can start from scratch, even with no prior programming experience. Not just the basics—we’ll dive into the language’s nuances and practice hands-on, so by the end you’ll be fully prepared for a Kotlin interview. Throughout the course, you’ll complete practical assignments and projects that reinforce each topic and help you build real development skills.
I wish you success in mastering Kotlin—may you gain new knowledge and the inspiration to conquer the world of programming! See you in the course!
Why Kotlin?
Because it’s a modern language with official support from Google. Designed with lessons from dozens of other languages, Kotlin keeps the best practices and removes unnecessary complexity. Code is shorter and clearer, and writing in Kotlin is fast and convenient. Built-in null-safety and a modern concurrency model with coroutines improve application stability and safety. Plus, it’s fully compatible with Java and the JVM ecosystem, so you can leverage existing libraries and familiar tools without extra hurdles. Most importantly, Kotlin has strong prospects: active development, broad industry support, and high market demand.