Intermediate Scala


This Intermediate Scala course builds on the Introduction to Scala course. Many concepts and techniques are introduced, with lots of working code examples and exercises, including functional programming, implicits, process control, I/O, collections, pattern matching, combinators, partial functions, application configuration techniques, memoization, and multithreading (including parallel collections, Futures, Promises and Akka Actors).

We guarantee that taking this course will make you work hard; and as a result students gain a lot of practical, hands-on experience with Scala. The concepts taught allow you to feel comfortable with the code that you will find in Apache Spark and Play Framework 2 for Scala projects, and motivational Spark and Play examples are provided in the course.

As with the Introduction to Scala course, this course is based on code samples that can be pasted into the Scala REPL, and that code is also provided in the accompanying git repository. This course has already been updated to Scala 2.12.


The course consists of 10 hours of video, over 450 pages of lecture notes (if printed as an O'Reilly-sized book), more than six-dozen sample programs and about a dozen exercises. Students should expect to spend at least 40 hours working through the material.


After completing this course you should:

  • Be on your way to becoming a competent Scala programmer – practice makes perfect!
  • Know and be able to apply the functional programming style in Scala
  • Know when it is appropriate to write recursive code, and how to do it
  • Be able to control system processes, read and write data
  • Be familiar with Scala collections, and how to interoperate with Java collections
  • Know several ways of writing multi-threaded code, how to select the appropriate mechanism, and how to write similar code using different techniques
  • Be familiar with optimization techniques such as memoization
  • Be able to read and understand documentation for advanced frameworks such as Play and Spark
  • Be confident to start using Scala in production environments


Application developers wishing to learn Scala.


Students taking this course should have:

  • Introduction to Scala course or equivalent.

Setup Requirements

Already covered in the Introduction to Scala course.


See the course description for a detailed outline, including a free overview video and revision history.