The target audience for this course is the Scala Application Developer Community. In other words, the focus is on people who use the language to develop 'end-user' applications and not necessarily those developers who design and write libraries, toolkits or frameworks (although they may benefit from what is in this course if they haven't already worked with Dotty).
The goal of the course is to explore the new features in the Scala language brought by the Dotty project. Even though it is still early days and the first release candidate of the Scala 3 language is probably not out for another 6 months, it is our believe that one can never start too early to learn Dotty for the following reasons:
- There is a lot to learn, so if you wait until everything is ready, you risk having to play catchup.
- There are many opportunities to contribute to the Dotty project, which will accelerate its development in the coming months. Using Dotty will provide opportunities to identity issues to be fixed sooner rather than later.
This repository, located in the exercises
subfolder, contains all exercises in a multi-project sbt build. In order to run exercises directly from this repo, cd into this folder and run sbt. Alternatively, import the build.sbt file in your favourite development environment (Metals with a client of your choice or IntelliJ).
This repository, located in the code-snippets
folder contains small examples, built mainly for demo purposes (and for inclusion in course slides).
Various artifacts are generated for this course:
- The exercises in studentified format: this is the format that is tuned for learning purposes.
- The exercises in linearized format: useful to study the changes between consecutive exercises.
- The course slide deck in PDF format.
If you want to have a concise overview on how to utilize the studentified and the linearized artifacts, there's a video on this topic what you can find here.
You can find these artifacts in the releases of this project.
Note: We recently renamed the default branch to
main
. If you already have a clone/fork of this repo, please follow the instructions in the 0.24.0-v2 release notes