Essential Scala

Get the Book

Download the course textbook, complete with exercises and solutions, in HTML, PDF, and ePub formats.

Buy now - $50

20% Team Discount

Get your whole team up to speed with 10 licenses for Essential Scala at a 20% discount.

Buy now - $500 $400

Public Courses

We run public courses online and at locations around the world. Check our events calendar for the next scheduled course.

View upcoming events

Private Courses

Let us come to you. Book a private course at your convenience, taught online or on-site at your offices.

Book now - $7,500£5,000€7,000


Essential Scala is a two day course aimed at experienced developers who are encountering Scala for the first time. Put your existing skills to use mastering Scala’s combination of object-oriented and functional programming.

The course teaches you Scala from the basics of its syntax to advanced problem solving techniques. We place a heavy focus on developing the functional programming mindset you need to get the most out of the language. Each section has a practical focus, mixing presentation with in-depth hands-on labs and exercises.

If you are an experienced developer taking your first steps in Scala and want to get up to speed quickly then this is the course for you.


To benefit from this course you should have one to two years’ experience with an object-oriented (e.g. Java, C#) or functional (e.g. Haskell, Lisp) programming language and a good general understanding of object-oriented or functional programming language concepts.

Learning Outcomes

Take away a working knowledge of object-oriented and functional programming in Scala. Learn the common patterns needed to get the most out of Scala’s extensive collections framework.

Gain a comprehensive understanding of Scala’s sophisticated pattern matching facilities and the programming styles they support.

Learn how Scala’s flexible syntax, by-name arguments and implicit conversions and arguments support the creation of fluent interfaces and sophisticated internal domain specific languages.

Table of Contents

  • Introduction
    • Expressions, Types, and Values
    • Interacting with Objects
    • Literal Objects
    • Object Literals
    • Methods and Fields
    • Compound Expressions
  • Objects and Classes
    • Classes
    • Objects as Functions
    • Companion Objects
    • Case Classes
    • Pattern Matching
  • Modelling Data with Traits
    • This or That and Nothing Else: Sealed Traits
    • Modelling Data with Traits
    • The Is-a Or Pattern
    • Working With Data
    • Recursive Data
  • Sequencing Computations
    • Generics
    • Functions
    • Generic Folds for Generic Data
    • Modelling Data with Generic Types
    • Sequencing Computation
    • Variance
  • Collections
    • Sequences
    • Working with Sequences
    • For Comprehensions
    • Options
    • Options as Flow Control
    • Monads
    • Maps and Sets
    • Ranges
  • Type Classes
    • Type Class Foundations
    • Implicit Parameters
    • Implicit Values
    • Type Classes
    • Type Enrichment
    • Combining Type Classes and Type Enrichment
    • Using Type Classes
    • Implicit Conversions
  • Pattern Matching
    • Standard Patterns
    • Custom Patterns
  • Growing the Language
    • Operators
    • Special Methods
    • Operator Associativity
    • Final Words
    • Custom Control Structures
    • Syntax Extensions