Book an on-site course

Duration: 3 days

Don't go it alone! Book a private course for your team, taught on-site at your offices.

Book an online course

Duration: 6 weeks

Want a more in-depth approach? Book an online course for your team, taught via live video conferencing.

Overview

Essential Scala is a three day course aimed at experienced developers with little or no experience with Scala. Our goal is to get you writing Scala the right way as quickly as possible.

The course teaches you Scala from the basics of its syntax to advanced problem solving techniques. We place a heavy emphasis 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 wanting to get up to speed quickly, then this is the course for you.

Prerequisites

To benefit from this course you should have at least one or two years’ experience with an object-oriented (e.g. Java, C#) or functional (e.g. Haskell, Lisp) programming language.

Learning Outcomes

Develop a conceptual framework by which we can judge good Scala. Use equational reasoning to understand how to read and write simple, testable, scalable programs.

Understand key functional programming concepts and their encoding in Scala:

  • Model data using algebraic data types, represented in Scala as families of sealed traits and case classes.

  • Use structural recursion and pattern matching to traverse and transform data.

  • Gain a deep understanding of map, flatMap, and fold, the three most important methods for sequencing computations in Scala.

  • Learn the common patterns needed to get the most out of Scala’s extensive collections framework.

  • Learn how to extend existing libraries using type classes—a simpler, more flexible alternative to object oriented inheritance.

Timetable

The course runs over three days, or six weeks if delivered online.

Day one covers:

  • algebraic data types
  • functions;
  • generics; and
  • sequencing computations

Day two covers:

  • standard library; and
  • type classes.

Day three brings the course material together in an extended case study, chosen between the teacher and the students.

If time is short we can drop the third day, though the longer course is a much bettter experience.

The online course follows a similar pattern but meets one per week for two hours, and students have to complete homework outside the meeting. The extra time allows us to cover more material but this only works if the students have sufficient time to complete the homework. For the majority of people we recommend the onsite course, but if you’re sure students can schedule four hours per week for coursework the online course is a good option.

Table of Contents

  • Introduction
    • Expressions, Types, and Values
    • Interacting with Objects
    • Immutability and Equational Reasoning
  • Algebraic Data Types
    • Case Classes and Sealed Traits
    • Structural Recursion
    • Pattern Matching
  • Functions
    • Function Literals
    • Functions as Values
    • Functions as Objects
    • Higher Order Functions and Methods
  • Generics
    • Generic Types and Methods
    • Using Functions to Decouple Concepts
    • Variance
  • Sequencing Computations
    • Map and FlatMap
    • Iterating and Looping
    • Folding
    • For Comprehensions
    • Sequencing Computations
  • Standard Library
    • Packages and Companion Objects
    • Options
    • Tuples
    • Lists, Ranges, and Sequences
    • Maps and Sets
  • Type Classes
    • The Type Class Pattern
    • Implicit Parameters
    • Implicit Values
    • Type Enrichment
    • Combining Type Classes and Type Enrichment

Feedback from Students

“Course material was awesome and the Instructor was knowledgeable and helpful.”

– An anonymous Comcast employee

“Fun course, very clear and interesting!”

– Maarten, AE

“The Essential Scala book is very clearly laid out, with lots of useful exercises and clear solutions.

The content of the course and the case study is stretching and introduced some really useful concepts that have already started to improve my day-to-day programming.”

– Teedah, Animal and Plant Health Agency