#Setup

This section describes the software that you will need to work on your project.

#Minimum Requirements

To participate in coding and other activities, each person requires access to a modern computer running Windows, Linux or macOS. 8GB of RAM or more is recommended, and you must have administrative rights on this machine (which disqualifies the use of lab computers). A notebook computer is preferred, since you will be working on your project in-class.

Note that a physical phone is NOT required for Android development, since you can use a virtual device (AVD). This will be demonstrated in-class.

#What to Install?

The following software is used in this course and represents the minimum tech stack that you must use.

  • Install manually indicates that you should install from the link provided.
  • IntelliJ plugin indicates that this is bundled with the IntelliJ IDEA IDE. Once the IDE is installed, you can check that this plugin is installed from Settings > Plugins. You should always use the most recent version of any plugin.
  • Installed by Gradle means that we will configure our build system to automatically download and manage this dependency. You don't need to install it manually.
SoftwareCategoryVersionHow to install?
GitTool2.45+Install manually
Java JDKLibrary21.0.4Install manually
IntelliJ IDEATool2024.2.1 - releasesInstall manually
KotlinCompiler2.0.20 - releasesIntelliJ plugin
Compose Multiplatform (Desktop)Library1.6.11 - releasesIntelliJ plugin
Android SDK (Android) - optionalLibraryLatest SDKInstall manually
Jetpack Compose (Android)Library1.6.7 - releasesInstalled by Gradle
Ktor client/serverLibrary2.3.12 - releasesInstalled by Gradle
JUnitLibrary5.xInstalled by Gradle

Notes

  • Installing the newest version of any library is usually the best strategy, but be careful about compiler/library compatibility. The Kotlin and JDK versions in particular need to be compatible versions.
  • Android Studio is optional. It's only required for Android development, and you can use either IntelliJ IDEA or Android Studio for developing Android applications (just make sure your team all picks the same tooling and versions!)
  • See our Libraries reference for more information on libraries listed here.

#Why this Tech Stack?

The goal of this course is to teach you how to build a modern, full-stack native application, using "standard" tools. You should leave this course being able to design and build a desktop or mobile application that leverages remote services, databases, and other external resources. It's tricky finding a tech stack that supports these broad goals.

Kotlin may be a new programming language to you, but it's an important one: it's Google's primary language for building Android applications, and they are heavily invested in the Kotlin ecosystem1. If you want to learn mobile development for Android devices, it's the language to learn first!

It can also be used to build native applications for other platforms: desktop, such as macOS, Windows and Linux, or other platforms like iOS, watchOS, tvOS, and even web/WASM. We'll be focusing on desktop and Android in this course2.

Finally, Kotlin is also a fully capable programming language for building servers and services, with broad interoperability with Java libraries and existing web service frameworks e.g., Spring Boot, Ktor, etc. Given the Java market share for server-side development, Kotlin is a great language to learn for building full-stack applications.

#Last Word

We recommend an IDE like IntelliJ IDEA or Android Studio, but hey, you do you.


  1. At Google I/O 2024, their developer conference, Google announced that more than 60% of the top 1000 apps on the Google Play Store are written in Kotlin.

  2. We won't be building iOS applications in this course, mainly because iOS support requires dedicated Apple hardware, which is not available to all students. Android development tools will work on Windows, macOS and Linux, so there are no barriers to entry.