Core Scala: Blending Functional and Object Oriented

Upcoming Dates

Next public courses TBA London Get in touch to book privately

Course Outline

Our 2/3 day Core Scala course is aimed at experienced developers who are encountering Scala for the first time and want to understand how their knowledge of object-oriented and functional programming idioms carries over to and is deepened in this exciting new language. It covers Scala from basic syntax and language constructs, through its distinctive object-oriented characteristics and on to functional programming styles and pattern matching as applied to Scala's extensive collections framework. It also covers Scala's many facilities which support the creation of fluent interfaces and rich internal domain specific languages. The course 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 with this exciting new language then this is the course for you.

This core Scala course is offered both publicly and privately at your site. When delivered privately you have complete course programming flexibility allowing you and your team to tailor course content to your needs and to fit its delivery around your normal schedule — for example, scheduling two day courses as four half days over four weeks might be suitable. Please contact us to tell us what you need and for pricing and bookings.

You will ...

  • 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.

Course prerequisites

To benefit from this course you should have 1-2 years experience with an object-oriented (eg. Java, C#) or functional (eg. Haskell, Scheme) programming language and a good general understanding of object-oriented or functional programming language concepts.

Programme ...

First brush with the language

  • Introducing the syntax
  • Primitive and simple types
  • Control constructs
  • Classes and case classes
  • Traits
  • Objects
  • Functions

Introducing Collections

  • Mutability & immutability
  • Lists & Buffers
  • Sets & Maps
  • Arrays
  • For comprehensions
  • Interoperability with Java

Collections and functional programming

  • Streams
  • Options
  • Revisiting for comprehensions
  • Higher-order functions
  • Monads

Object-oriented programming in Scala

  • Objects & modules
  • Traits and mixin composition
  • Self types
  • Parameterized and abstract types
  • Structural types

Case classes and pattern matching

  • Structural recursion
  • Kinds of pattern
  • Matching with Lists and Options
  • Pattern matching vs. higher-order functions
  • Pattern matching in unexpected places
  • Pattern matching generalized

Growing the language

  • Extended control constructs and embedded DSLs
  • Call by name and laziness
  • Implicit conversions and parameters

Please contact us to arrange your booking.