Android Development with Kotlin

  1. Kotlin Language Fundamentals
    1. Basic Syntax and Idioms
      1. Variables and Constants
        1. val vs. var
          1. Immutable vs. Mutable Variables
            1. Type Inference
            2. Basic Data Types
              1. Numbers
                1. Int
                  1. Double
                    1. Float
                      1. Long
                      2. Boolean
                        1. Char and String
                          1. Arrays
                            1. Collections
                            2. Functions
                              1. Function Declaration and Parameters
                                1. Default and Named Arguments
                                  1. Single-Expression Functions
                                    1. Local Functions
                                    2. Lambda Expressions
                                      1. Lambda Syntax and Usage
                                        1. Trailing Lambda Syntax
                                      2. Null Safety
                                        1. Nullable vs. Non-Nullable Types
                                          1. Declaring Nullable Types
                                            1. Safe Type Casting
                                            2. Safe Calls (?.)
                                              1. Chaining Safe Calls
                                              2. The Elvis Operator (?:)
                                                1. Providing Default Values
                                                2. Not-Null Assertion (!!)
                                                  1. Risks and Best Practices
                                                  2. Let Function for Null Checks
                                                  3. Control Flow
                                                    1. Conditional Expressions
                                                      1. if as an Expression
                                                        1. when as a Switch Replacement
                                                          1. when with Ranges and Collections
                                                          2. Loops
                                                            1. for Loops
                                                              1. Iterating Over Collections
                                                                1. Loop Ranges and Steps
                                                                2. while and do-while Loops
                                                                3. Ranges
                                                                  1. Range Operators
                                                                    1. DownTo and Step
                                                                      1. in Operator
                                                                      2. Break and Continue
                                                                      3. Object-Oriented Programming in Kotlin
                                                                        1. Classes and Objects
                                                                          1. Class Declaration
                                                                            1. Object Instantiation
                                                                              1. Class Members
                                                                              2. Properties and Fields
                                                                                1. Property Declaration
                                                                                  1. Getters and Setters
                                                                                    1. Backing Fields
                                                                                      1. Late-Initialized Properties
                                                                                      2. Constructors and Initialization
                                                                                        1. Primary Constructors
                                                                                          1. Secondary Constructors
                                                                                            1. Init Blocks
                                                                                              1. Constructor Parameters vs. Properties
                                                                                              2. Inheritance and Polymorphism
                                                                                                1. Open and Final Classes
                                                                                                  1. Method Overriding
                                                                                                    1. Calling Superclass Implementation
                                                                                                    2. Abstract Classes and Interfaces
                                                                                                      1. Defining Abstract Members
                                                                                                        1. Implementing Interfaces
                                                                                                          1. Interface Default Implementations
                                                                                                          2. Data Classes
                                                                                                            1. Auto-generated Methods
                                                                                                              1. equals()
                                                                                                                1. hashCode()
                                                                                                                  1. toString()
                                                                                                                    1. copy()
                                                                                                                      1. componentN()
                                                                                                                      2. Use Cases
                                                                                                                        1. Destructuring Declarations
                                                                                                                        2. Sealed Classes
                                                                                                                          1. Restricted Class Hierarchies
                                                                                                                            1. Use in when Expressions
                                                                                                                            2. Objects and Companion Objects
                                                                                                                              1. Singleton Pattern
                                                                                                                                1. Object Expressions
                                                                                                                                  1. Companion Objects
                                                                                                                                    1. Static Members Alternative
                                                                                                                                    2. Enum Classes
                                                                                                                                      1. Basic Enum Declaration
                                                                                                                                        1. Enum with Properties and Methods
                                                                                                                                        2. Nested and Inner Classes
                                                                                                                                          1. Nested Classes
                                                                                                                                            1. Inner Classes
                                                                                                                                          2. Functional Programming Concepts
                                                                                                                                            1. Higher-Order Functions
                                                                                                                                              1. Passing Functions as Parameters
                                                                                                                                                1. Returning Functions
                                                                                                                                                2. Lambda Expressions Advanced
                                                                                                                                                  1. Closures
                                                                                                                                                    1. Function Types
                                                                                                                                                    2. Collection Processing APIs
                                                                                                                                                      1. map
                                                                                                                                                        1. filter
                                                                                                                                                          1. forEach
                                                                                                                                                            1. reduce and fold
                                                                                                                                                              1. groupBy and partition
                                                                                                                                                                1. find and first
                                                                                                                                                                  1. any and all
                                                                                                                                                                    1. sortedBy and sortedWith
                                                                                                                                                                  2. Advanced Kotlin Features
                                                                                                                                                                    1. Extension Functions
                                                                                                                                                                      1. Adding Methods to Existing Classes
                                                                                                                                                                        1. Extension Properties
                                                                                                                                                                          1. Member vs. Extension Functions
                                                                                                                                                                          2. Scope Functions
                                                                                                                                                                            1. let
                                                                                                                                                                              1. run
                                                                                                                                                                                1. with
                                                                                                                                                                                  1. apply
                                                                                                                                                                                    1. also
                                                                                                                                                                                      1. Choosing the Right Scope Function
                                                                                                                                                                                      2. Infix Functions
                                                                                                                                                                                        1. Operator Overloading
                                                                                                                                                                                          1. Destructuring Declarations
                                                                                                                                                                                            1. Type Aliases
                                                                                                                                                                                              1. Generics
                                                                                                                                                                                                1. Generic Classes and Functions
                                                                                                                                                                                                  1. Type Constraints
                                                                                                                                                                                                    1. Variance (in, out)
                                                                                                                                                                                                    2. Coroutines Introduction
                                                                                                                                                                                                      1. Suspending Functions
                                                                                                                                                                                                        1. Coroutine Builders
                                                                                                                                                                                                          1. launch
                                                                                                                                                                                                            1. async
                                                                                                                                                                                                            2. Coroutine Context and Scope