# Installing Software

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 required minimum tech stack that you must use. In general, you want to use the latest version of each tool, but be aware that newer versions may introduce breaking changes.

Technology Version Description
Git 2.45.x Used for version control, with our Git server
Java JDK 17.x Required for compilation
Android Studio Latest Customized Android IDE
IntelliJ IDEA Latest Desktop or Android IDE
Kotlin 2.x Our primary programming language
Gradle 8.x Build system: compiliation, testing, deployment
JUnit 5.x Running and reporting results from unit tests

Later in the course, we will introduce additional libraries for specialized functionality e.g., networking, image loading, database connectivity. You may also need additional libraries to support features that are specific to your application.

# 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.