Table of Content
 
Kotlin Pre-requisites
- Introduction
 - Install the Java JDK 8
 - Install Android Studio
 - Set Up a Project in Android Studio
 
Kotlin Basics
- Introduction
 - Variables and Data Types
 - Null Safety in Kotlin
 - Conditionals: "if" Expressions
 - Conditionals: "when" Expressions
 - Collections
 - "for" Loops
 - "while" Loops
 - Functions
 - Get Ready for Serious Kotlin Coding (Set up IntelliJ IDEA)
 - Create a main() Function
 - Named Arguments & Default Parameter Values
 - Exceptions
 - Why No Checked Exceptions?
 
Functional Programming
- Introduction
 - What is Functional Programming?
 - Functional Programming II
 - Lambdas & Higher-Order Functions
 - Use map() and flatMap()
 - Use take () and drop()
 - Use zip ()
 - Chain Functions Together
 - Lazy Sequences
 - Case Study: Performance of Lazy Sequences
 - Code Along: Infinite Lazy Sequence of All Prime Numbers
 - Use "let" Operator for Scoping and Nullables
 - Use "with" for Many Calls on the Same Object
 - Use "use" for Closeable (like try-with-resources)
 - Inline Functions
 
Object-Orientation in Kotlin
- Introduction
 - Classes
 - Properties with Getters & Setters
 - Primary and Secondary Constructors
 - Methods
 - Extension Functions
 - Data Classes
 - Enums
 - Inheritance
 - Code Along: Inheritance Example
 - Abstract Classes
 - Interfaces
 - Overriding Rules
 - Smart Casts
 - Visibilities
 - Companion Objects for "Static" Members
 - Object Declarations as Singletons
 - Packages and Imports
 - Generic Classes
 - Generic Functions
 - Covariance
 - Covariance: Java vs Kotlin
 - Covariance vs. Contra variance: "out" and "in"
 
Kotlin for Android Fundamentals
- Introduction
 - Create the App Project
 - Understand the Android Versions
 - Create a CardView Layout and Add UI Elements
 - Use the "Kotlin Android Extensions"
 
Android RecyclerView
- Introduction
 - What is a RecyclerView?
 - Create the Data Class "Habit"
 - Implement the "HabitsAdapter"
 
Android Activity
- Introduction
 - Add a Menu
 - Add a Second Activity
 - Use Intents to Switch Activities
 - Challenge Solution
 - Let Users Choose an Image
 - Get the Selected Image Back (onActivityResult)
 - Show Error Messages to the User
 - Code Along: An Extension Function for "EditText"
 
Kotlin and SQLite
- Introduction
 - Introducing SQLite
 - Define the Contracts
 - Implement the Database Helper
 - Store a Habit to SQLite
 - Implementing Secure Transactions (that support Rollback)
 - Clean Code: Improving Transactions in Kotlin
 - Clean Code: Further Improving Transactions and Performance
 - Store the Habit in "CreateHabitActivity"
 - Read All Habits from SQLite
 - Challenge Solution
 - Challenge Solution
 - Add Files to the Virtual Device
 
Apply for certification
https://www.vskills.in/certification/kotlin-developer
