← Languages

Scala

Full course · 21 lessons

Scala combines object-oriented and functional programming on the JVM. It powers high-performance data pipelines (Apache Spark), distributed systems (Akka), and type-safe web applications. These are the definitive free resources — vetted, current, and complete.

Knowledge Course
01

Getting Started with Scala 3

Set up the Scala toolchain and write your first programs in the REPL and with sbt.

45 min
02

Values, Variables and the Type System

Understand vals, vars, primitive types, and how Scala infers and converts types.

45 min
03

Control Flow: if, match and Loops

Write expressive branching with if-expressions and pattern-matching match expressions.

45 min
04

Defining Functions

Write functions with parameters, default values and named arguments.

45 min
05

Higher-Order Functions and Lambdas

Transform collections with map, filter, fold and other higher-order functions.

45 min
06

Collections: List, Vector, Map and Set

Choose the right immutable collection and use its API effectively.

60 min
07

Case Classes and Pattern Matching

Model data with case classes and destructure it with pattern matching.

60 min
08

Classes, Traits and Inheritance

Build object-oriented abstractions with classes, traits and extension.

60 min
09

Immutability and Functional Style

Write pure, referentially transparent code that avoids shared mutable state.

45 min
10

Option and Either for Safe Handling

Replace null and exceptions with Option and Either for total functions.

45 min
11

For Comprehensions and Monadic Composition

Sequence and transform monadic values with for comprehensions.

45 min
12

Generics and the Type System

Write reusable code with type parameters, bounds and variance.

60 min
13

Type Classes and Givens

Implement ad-hoc polymorphism with type classes and given instances.

60 min
14

Concurrency with Futures and Promises

Run work on thread pools and combine asynchronous results with Futures.

60 min
15

Files and I/O

Read and write files, parse lines, and stream large inputs lazily.

45 min
16

Testing with munit and ScalaTest

Write unit tests, property tests and test suites for Scala code.

45 min
17

Error Handling with Try and Either

Model failures explicitly and recover with Try, Either and validated data.

45 min
18

Builds and Dependencies with sbt

Configure builds, manage dependencies and run tasks with sbt.

45 min
19

Tail Recursion and Performance

Write stack-safe recursion and reason about allocation and performance.

45 min
20

Contextual Abstractions in Depth

Master using clauses, given instances and contextual lookup for flexible APIs.

60 min
21

Putting It All Together

Build a complete idiomatic Scala program combining FP, OOP and safe IO.

60 min
Curated Resources