Training | Kotlin Fundamentals

Training designed to provide developers with a strong grasp of the basic concepts and features of the Kotlin programming language.

kotlin

Overview

Kotlin is one of the most promising JVM languages and has seen immense growth over the last few years. The language is now being used in thousands of systems, including both backend and frontend. Kotlin is a multiplatform JVM language that was announced as official programming language for Android by Google some years ago.

This course is designed for developers that want to grasp the language, so they can face any Kotlin projects professionally.

Why Kotlin?

  • Concise: Drastically reduce the amount of boilerplate code.
  • Safe: Avoid entire classes of errors such as null pointer exceptions.
  • Interoperable: Leverage existing libraries for the JVM, Android, and the browser.
  • Multiplatform: Supporting JVM, iOS, Android, JS, Linux, Windows, Mac, and even embedded systems.
  • Tool-friendly: Choose any Java IDE or build from the command line.

Prerequisites

  • One year of experience with any object-oriented or JVM language.
  • Desirable: some IntelliJ IDEA experience.
  • What you'll learn

    This course covers the essential topics for building Kotlin programs. We’ll cover all of the concepts that are required to master the language. Here is the table of contents:

    1. Intro to Kotlin (2h)

    • How start our first Kotlin project (IntellIJ).
    • Class, Interface, Object.
    • Properties (val vs var).
    • Property accessors (getters and setters).
    • Higher Order Functions.
    • Named and default arguments.
    • String templates and multiline String.
    • Kotlin's type System.
    • Nullability.
    • Exercises.

    2. Kotlin Essentials (2h)

    • Expressions vs statements.
    • Control flow structures (if, for, while).
    • Collections(builders, map, flatMap, fold, reduce…).
    • Scope functions (let, run, with, apply, also).
    • Operators and operator overloading.
    • Extension Functions.
    • Lambdas.
    • SAM Conversions (sugar).
    • Lambdas with receiver.
    • Kotlin DSLs.
    • Class and property delegation (Lazy delegate).
    • Inline classes.
    • Generic types.
    • Exercises.

    3. Domain modeling (2h)

    • How to leverage Kotlin type system for domain modeling.
    • Pairs, Triples and Ranges.
    • Data classes.
    • Enum classes.
    • Sealed classes.
    • When statements, exhaustive evaluation.
    • Smart casting.
    • Kotlin contracts.
    • Component destructuring.
    • Precise domain modelling.
    • Exercises.

    4. Kotlin Multiplatform (2h)

    • Target platforms supported.
    • Setting up an MPP program.
    • Expected / Actual.
    • Backwards JDK compatibility.
    • Bytecode generation.
    • Bytecode optimizations (inline).
    • A word about metaprogramming.
    • Live demo.

    5. Stdlib primitives (2h)

    • Suspend.
    • Continuation.
    • Intrinsics.
    • RestrictSuspension.
    • CoroutineContext.
    • Exercises.

    6. Stdlib Coroutines (2h)

    • Coroutines as lightweight threads.
    • Blocking and non blocking coroutine launchers.
    • From callbacks to direct style.
    • Coroutines as a means to track side effects.
    • Exercises

    7. Runtime libraries (2h)

    • Existing libraries (KotlinX / Arrow Fx Coroutines).
    • Basic library comparison.
    • Writing sync and async effects.
    • Integration with third party libraries.
    • Coroutine contexts, Dispatchers, context shifting.
    • Collaborative cancellation.
    • Streams (KotlinX Flow, Arrow Streams).
    • Exercises.

    8. Q&A and practice (2h)

    • Exposing problems.
    • Discussion.
    • Recapping.

    After completing this course, you’ll be ready to tackle any professional projects.

Skills

This Kotlin Fundamentals includes:

  • Maximum Class Size of 15
  • Access to Academy EduTools Platform
  • Access to Course Materials
  • Certificate of Completion
  • Access to a Private Channel with Trainers in the Academy Slack
  • A Q&A session one week post-course
  • A pre-and-post meeting with our trainers