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