Course Overview

What this Scala course covers, how to use it, prerequisites.

A self-contained, hands-on course covering Scala 3 (with notes on Scala 2 where it still matters): object-oriented and functional programming, the collections library, the advanced type system, contextual abstractions (givens, type classes), metaprogramming, concurrency, the effect-system ecosystem (Cats Effect, ZIO), and real-world tooling (sbt, Mill, scala-cli, Spark, http4s). Every chapter has runnable examples and exercises.

Course Map

Part I — Foundations Introduction to Scala Installation & Tooling

The REPL, scala-cli & Your First Program Values, Variables & Basic Types Strings & String Interpolation Operators & Expressions Functions & Lambdas The Type Hierarchy & Type Inference

Part II — Core Language & Standard Library Classes & Objects Traits & Mixins Enums & Algebraic Data Types Option, Either & Try The Collections Library

Higher-Order Functions & For-Comprehensions Exceptions & Error Handling

Packages, Imports, Access Modifiers & Exports Extension Methods & Top-Level Definitions I/O, Files & Regular Expressions Build Tools: sbt, Mill & scala-cli Testing: MUnit, ScalaTest & ScalaCheck Part III — Advanced Scala Generics, Variance & Bounds

Contextual Abstractions: given, using & Type Classes Implicits in Scala 2 (Legacy)

Advanced Types: Union, Intersection, Opaque, Literal & Structural

Type-Level Programming: Match Types, Type Lambdas, HKTs, Dependent Types Recursion, Laziness & Tail Calls

Functional Programming Abstractions & Cats Metaprogramming: inline, Macros, Mirrors & Derivation

Concurrency: Threads, Futures & Parallel Collections Effect Systems: Cats Effect & ZIO

Streaming: fs2, ZIO Streams & Pekko Streams Actors: Akka / Apache Pekko Performance & the JVM Scala.js & Scala Native

Scala 3 Syntax, Migration from Scala 2 & Experimental Features Part IV — Ecosystem & Real-World Scala JSON & Serialization

Web Development: http4s, Tapir, Play, ZIO HTTP, Cask Databases: Doobie, Skunk, Slick, Quill, Magnum Big Data with Apache Spark Best Practices & Design Patterns

Appendices: Cheat Sheet, Keywords, Operators, Resources, Study Plan