Essential Scala

The course for developers who want to become effective Scala developers in a hurry


Essential Scala is our core course for developers who are new to Scala and want to quickly learn to use the language effectively.

The central idea in Essential Scala is that programming is a largely systematic and repeatable process; we can move from problem to solution using a number of well defined steps. In this view the details of the programming language are important but not as important as these higher level strategies that guide design and implementation. So Essential Scala does not attempt to give an encyclopaedic reference to the Scala language, but instead introduces language features in the context of the problems they solve. For example, we introduce sealed traits and final case classes because they solve the problem of representing data (in a form known as algebraic data types). This means students don’t just learn Scala, they learn how to use Scala effectively. Essential Scala an ideal choice for teams that want to quickly become productive in the language.


Attendees should have some previous programming experience in any programming language.



  • Core functional programming concepts: substitution, local reasoning, and composition
  • Expressions, types, and value

Algebraic data types and structural recursion:

  • Representing data using sealed traits and final case classes
  • Transforming data with pattern matching and polymorphism

Functions and generic types

  • Functions versus methods
  • Generic types and their uses
  • Variance (optional)

Sequencing transformations of data

  • map
  • flatMap
  • fold

Type classes

  • uses of type classes
  • type classes in Scala
  • implicit values and parameters
  • implicit classes

Case studies

  • Case studies are chosen in collaboration with students to illustrate how the concepts transfer to work situations.


Essential Scala runs over 3 days, when delivered onsite. When delivered online there is more flexibility. We usually recommend six sessions of 3.5 hours.