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