Learn Scala
Structured lessons from the basics up — follow the path below in order, at your own pace.
-
1
Level 1 — Beginner Beginner 29 lessons
Start here if you have never written a line of Scala before. No Scala experience is required, though knowing the basics of any…
Lessons in this module
What Is Scala? Why Learn Scala? What Can You Do With Scala? Installing Scala Setting Up Your Environment Your First Program How Scala Code Runs Values and Variables Data Types Type Inference Strings Numbers and Math Booleans and Comparisons if Expressions Blocks and Expressions Match Expressions for Loops and Ranges while Loops Methods Default and Named Parameters Functions as Values Tuples Lists Vectors, Arrays, and Buffers Sets and Maps Collection Operations Option: No More null Reading Input and Arguments Comments and Style -
2
Beginner Projects Beginner 1 lesson
Build these on your own using what you learned in Level 1. Each one uses values, methods, collections, pattern matching, and Option.…
-
3
Level 2 — Intermediate Intermediate 20 lessons
These lessons cover classes, case classes, objects, traits, enums and algebraic data types, pattern matching, generics, higher-order…
Lessons in this module
Classes Case Classes Objects and Companion Objects Traits Enums and Algebraic Data Types Pattern Matching in Depth Generics Higher-Order Functions For-Comprehensions Error Handling: Exceptions and Try Either and Validation Extension Methods Immutability in Practice Strings and Regular Expressions Working with Files Packages and Imports Building with sbt and Scala CLI Testing with MUnit Lazy Values, Views, and LazyList Java Interoperability -
4
Intermediate Projects Intermediate 1 lesson
Build these using case classes, traits, enums, pattern matching, for-comprehensions, Either, files, and tests from Level 2. Model…
-
5
Level 3 — Advanced Advanced 15 lessons
These lessons cover givens and contextual abstractions, type classes, opaque, union, and intersection types, variance, higher-kinded…
Lessons in this module
Givens and Using Clauses Type Classes Opaque, Union, and Intersection Types Variance Higher-Kinded Types Futures and Concurrency Functional Effects: Cats Effect and ZIO Inline and Metaprogramming Tail Recursion and Performance JSON Building Web Services Big Data with Apache Spark Actors with Apache Pekko Scala.js and Scala Native Shipping Scala to Production -
6
Advanced Projects Advanced 1 lesson
Build these using givens, type classes, futures or an effect system, JSON, web frameworks, and Spark from Level 3. Build a JSON API for a…
-
7
What You Should Know Now — and What's Next 1 lesson
Values, types, type inference, and expressions that return values Methods, functions as values, and higher-order functions Immutable…