Introduction: Why does this site exist?
- #Which Language?: Why learn kotlin and when to use Python
- Languages Background: How Languages Work
- Coding: From Python to Kotlin
- Building
- Testing
- Deployment and Implementation
- Packages
- Software Development Processes and Methodologies (including LEM/DSLEM)
- Appendices
- Glossary
(Full) Table Of Contents
1. Which Language?
- Why learn Kotlin in addition to python?
- Limitations of Kotlin compared to python
2. Languages Background: How Languages Work
- Languages:
- OOP vs Functional: No Contest
- Technical Background (for understanding in depth how things work)
3. Coding: From Python too Kotlin
- The basics (environment, comments)
- Variables and Types (under the hood)
- Functions and Methods (Traps and Tricks)
- None, Unit, Nothing, void and null
- Null Safety
- Val , var and immutability
- Classes Objects, Class Object & Instances
- Background & History of OO
- self vs this & modifiers: public, private, final, inline etc
- Classes Objects, Companion objects and Instances
- Python Class vs Instance Variables
- Python Class vs Instance Methods vs Functions
- Kotlin Instance vs Companion Objects
- Definition, Constructors & Init
- Class Data: Getters, Setters & Properties
- Composition, Interfaces & Delegates vs Multiple Inheritance & Duck Typing
- Dependency Injection
- Enums
- Extension Functions and Extension Properties
- Lambdas and closures:
- Data classes: Collections vs Objects
- Lists Dictionaries and Iteration and more (tuple. list, dictionaries, set, map, iterations, named tuple, Pair, data class, map, filter, reduce)
- Kotlin x Compose (coming very soon)
4. Testing
5. Building: No need with python?
- Gradle, Maven, Ant, other build tools and History
- Maven central vs pypi (the cheese shop)
- Gradle: Kotlin DSL Gradle
- Basic app build, basics concepts
- dependencies, repositories, reflect, jars, testing, sourceSets
- Building Shared Code
- Sharing with a local repo
- publishing to maven central
- Legacy Gradle groovy DSL Instructions
- Basic app build, basics concepts
6. Deployment & Implementation – Introducing Kotlin in practice
- Kotlin for android mobile applications
- Kotlin DSL for templates
- Multi Platform
- The Backend: Servers
- Data base server – web services (future page)
7. Packages
- Packages and Artefacts
- Python: PyPi
- Kotlin: Maven
- Sharing with a local repo
- publishing to maven central
8. Software Development Processes & Methodologies
- Language Extension Methodology (LEM/DSLEM)
- Functional vs OOP: No Contest
- More OOP with Kotlin
- Introduction to Functional Programming
- Waterfall vs Agile
- Unit Tests, TDD, TBD To TDD or Not to TDD
- Red, Green, Refactor
- Cross Platform vs Multiplatform (eg flutter vs Kotlin multi)
9. Appendices
- Java: The king is dying
- Moving to Kotlin for Android Mobile Applications
- When will your project grow up and move to static types
- BCSE vs TPSE: Two software industries, two development philosophies
- Kotlin beyond Android: A risk?
10. Glossary