Welcome
Outline
1.
Description
2.
Prerequisites
3.
Learning Objectives
4.
Assessment
5.
Policies
6.
Resources
7.
Contact us
Structure
9.
Schedule
10.
Lecture plans
11.
Project teams
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.
Coding & demos
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.2.6.
Kotlin Multiplatform
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 formats
19.4.3.
Databases
19.4.4.
Networking
19.4.5.
Web services
19.4.6.
Cloud hosting
19.4.7.
Containerization
20.
FAQ
20.1.
Course
20.2.
Project
20.3.
Gradle
21.
Reference
21.1.
Books & videos
21.2.
Code samples
21.3.
Libraries & plugins
About this site
Auto
Light
Rust
Coal
Navy
Ayu
CS 346 Application Development
Styles
Table of Contents
Console applications
Desktop/JVM applications
Mobile/Android applications