English
Object-oriented programming in Kotlin
Kotlin is a modern language recommended by Google for Android development and increasingly used for server-side and cross-platform applications. Concise syntax and built-in protection against null access errors let you write less code with fewer errors, and the same code can run on multiple platforms.
This course explores Kotlin 2.4 on the JVM in IntelliJ IDEA, from basic language constructs and null safety to object-oriented and functional programming, collections, file handling, data serialization, and unit testing. In the final stage, you learn asynchronous programming with coroutines and Flow, database access using the Exposed library, and graphical application development with Compose Multiplatform. Each topic combines a lecture with a lab assignment.
Course syllabus
Kotlin language fundamentals
- Kotlin 2.4 and the JVM platform, IntelliJ IDEA, Gradle projects, and the Git version control system
- Data types, variables, null safety, operations, and control flow constructs
- Functions: default parameters, named arguments, and extension functions; strings and string templates
- Exception handling, the Result type, and debugging programs
Object-oriented programming
- Classes and objects: properties, constructors, visibility modifiers, and packages
- Inheritance, abstract classes, interfaces, and polymorphism
- Data classes, enumerations, sealed classes, singleton objects, and companion objects
- Operator overloading, delegated properties, and class delegation
- Generic programming: generic classes and functions, variance, and reified parameters
Collections, functional programming, and data
- Kotlin collections: lists, sets, maps, mutable and immutable collections
- Lambda expressions, higher-order functions, collection operations, and sequences
- File handling, data serialization with kotlinx.serialization, and unit testing
Asynchrony, databases, and graphical applications
- Coroutines: suspend functions, structured concurrency, dispatchers, and asynchronous Flow streams
- Working with relational databases using the Exposed library
- Creating graphical applications with Compose Multiplatform: components, state, and layout
- MVVM architecture, navigation, and database access in Compose Multiplatform applications
Required software
| Software | Purpose | Topic |
|---|---|---|
| OpenJDK 27 | Runtime for the programs | 1 |
| JDK 25 | The Gradle build process | 1 |
| IntelliJ IDEA 2025.3 or later | Development environment | 1 |
| Git | Version control | 1 |
The IntelliJ IDEA wizard creates the Gradle Wrapper, and Gradle downloads the libraries (kotlinx.coroutines, kotlinx.serialization, Exposed, the SQLite driver, Compose Multiplatform) as dependencies. Topic 14 uses DataGrip and a PostgreSQL server as optional tools.
How a course is organized
A course is divided into topics. Each topic corresponds to one lecture and one lab assignment and has four parts:
- Lecture. The theory is split into chapters in reading order, with code examples, diagrams and program output.
- Practice. Worked examples with complete code that show how to do the lab assignment.
- Tasks. 30 variants of the lab assignment, each at three levels of difficulty: 1 – initial, 2 – basic, 3 – advanced. Every task is self-contained, so you can start right away at the level you choose.
- Summary. The topic’s conclusions, self-check questions and useful links.
To prepare for assessment, every course also has Review questions, Review tasks, Useful links and Recommended reading.
How to study
- Open your course and install the development environment named on the course page. The first topic of each course explains how, except “Object-oriented programming in C# II”, which uses the environment from the “Object-oriented programming in C# I” course.
- Read the lecture chapters in order. Type in and run the examples yourself rather than just reading them.
- On the Practice page, first try to solve the problem yourself, then compare your solution with the worked one.
- On the Tasks page, find your variant (your teacher gives you its number) and choose a level of difficulty.
- Check yourself with the questions on the Summary page, and only then move on to the next topic.
- Before the exam, go over the Review questions and solve a few Review tasks.
Navigation
The topics and their chapters are listed in the menu on the left (on a phone, open it with the “Menu” button). The “Next page” button at the bottom of every page follows the course program, and the “On this page” list on the right takes you to a section.
Course materials
- Review questions — 100 questions covering the course topics for self-checks and exam preparation
- Review tasks — practical tasks by topic
- Useful links — documentation and online resources
- Recommended reading — textbooks and guides