← 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