- Welcome
- Outline
- 1. Description
- 2. Prerequisites
- 3. Learning Objectives
- 4. Assessment
- 5. Policies
- 6. Resources
- Structure
- 8. Schedule
- 9. Lecture plans
- 10. Project teams
- 11. Contact us
- Course Project
- 12. Getting started
- 12.1. Requirements
- 12.2. Forming teams
- 12.3. Picking a topic
- 12.4. Examples
- 13. Deliverables
- 13.1. Project setup
- 13.2. Project proposal
- 13.3. Design proposal
- 13.4. Project iterations
- 13.5. Final submission
- 13.6. Team assessment
- Course Notes
- 14. Introduction
- 15. Project management
- 15.1. Teamwork
- 15.2. Being Agile
- 15.4. GitLab projects
- 15.5. Documentation
- 16. Design thinking
- 17. Software design
- 17.1. Architecture
- 17.2. Design principles
- 17.4. Software modelling
- 17.5. Code structure
- 18. Best practices
- 18.1. Version control
- 18.2. Build configuration
- 18.3. Pair programming
- 18.4. Code reviews
- 18.5. Refactoring
- 18.6. Unit testing
- 18.7. Software release
- 19. Development
- 19.1. Getting started
- 19.1.1. Technology choices
- 19.1.2. Toolchain installation
- 19.1.3. Source code setup
- 19.2. Kotlin programming
- 19.2.1. Kotlin basics
- 19.2.2. OO Kotlin
- 19.2.3. Functional Kotlin
- 19.2.4. Idiomatic Kotlin
- 19.2.5. Concurrency
- 19.3. Application styles
- 19.3.1. Console
- 19.3.2. Desktop
- 19.3.3. Mobile
- 19.4. Topics
- 19.4.1. User interfaces
- 19.4.2. Data storage
- 19.4.3. Databases
- 19.4.4. Networking
- 19.4.5. Web services
- 19.4.6. Cloud hosting
- 19.4.7. Containerization
- 20. Reference
- 20.1. Books & videos
- 20.2. Code samples
- 20.3. Libraries & plugins
- About this site