Kotlin Training Plan - trungungtoan-agilityio/kotlin-learning GitHub Wiki

Training Plan

Course: https://www.coursera.org/learn/kotlin-for-java-developers

1. Introduction

  • List the key characteristics of Kotlin
  • Understand the types of tasks where Kotlin can be used

2. Starting up with Kotlin

  • Convert Java code to Kotlin automatically
  • Define variables and functions
  • Use control structures
  • Employ ranges
  • Explain what is an extension function in Kotlin
  • Define and use extensions

3. Nullability, Functional Programming

  • Distinguish nullable types and non-nullable types
  • Use different ways to perform an action only when a value of a nullable type is not null
  • Prefer safe operations for nullable values
  • Employ functional programming style for manipulating collections
  • Use function types
  • Choose the right form of return expression for returning from lambda

4. Objectives

  • Distinguish between different kinds of properties: without backing field, lazy, lateinit
  • Summarize the differences in defining and using classes with Java
  • Know the different syntax for constructors
  • Use different kinds of classes for correct situations: enum, data, inner, sealed
  • Use annotations to improve Java interoperability
  • Explain the difference between object expression and object declaration
  • Show the benefits of companion objects over static methods
  • Give examples of using conventions in the standard library
  • Employ conventions for your own classes

5. Sequences, Lambdas with Receiver, Types

  • Use short simple function from the standard library
  • Explain why simple library functions bring no performance overhead
  • Demonstrate how inlining works
  • Describe the difference between operations on Collections and operations on Sequences
  • Convert a chained call from Collections to Sequences
  • Recognize lambdas with receiver in the code: in the standard library and different DSLs
  • Illustrate in what sense lambdas with receiver are similar to extensions
  • Show the Kotlin type hierarchy
  • Explain the difference between Unit and Nothing types
  • Recognize platform types: the types that came from Java
  • Prevent NPEs for mixed Kotlin and Java code