Scala Training from _.underscore

We offer a range of Scala training courses which will take you and your team from their first steps, through to in-depth mastery of the language and familiarity with the tools, libraries and frameworks which will allow you to take Scala successfully into production.

Audience Format
Core Scala: Blending Functional and Object Oriented Experienced developers with minimal exposure to Scala Your site, 2/3 days & publicly in partnership with _.underscore
Typeful Scala: Exploiting the Power of Types Developers and leads with > 6 months Scala experience Your site, 2/3 days & publicly in partnership with _.underscore
Practical Scala: Tools, Libraries and Frameworks Developers and leads with > 6 months Scala experience Coming sooncontact us for more details
Transitional Scala: Painless Migration from Java to Scala Experienced Java developers and leads with some exposure to Scala Coming sooncontact us for more details

All our Scala training courses are offered at your site. 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

Chuusai’s courses are also offered publicly in partnership with Underscore Consulting in London. Please contact us for dates of upcoming courses and bookings


Core Scala: Blending Functional and Object Oriented

Miles Sabin’s two/three 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. It is an ideal precursor to Chuusai’s Typeful Scala and Practical Scala courses.

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 at your site. 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

Typeful Scala: Exploiting the Power of Types

Miles Sabin’s two/three day Typeful Scala Development course is aimed at developers and leads who have mastered the essentials of core Scala and want to take their understanding of the language and its compiler to the next level. It covers Scala’s powerful type system in depth with concrete illustrations of practical applications of its more advanced features. The course also introduces the Scala compiler’s plug-in architecture and shows how it can be used to support tools and extend the language. The course has a practical focus, mixing presentation with in-depth hands-on labs and exercises. It is an ideal follow on to Chuusai’s Core Scala course.

If you have mastered the essentials of core Scala and want to learn more about its type system and how best to exploit it, gain in-depth understanding of its standard library, and discover what can be achieved by extending the Scala compiler via its plugin architecture, then this is the course for you.

This advanced Scala course is offered at your site. 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 …

  • Gain a comprehensive understanding of Scala’s powerful type system, how it’s used in advanced libraries such as Scalaz and shapeless, and how compile-time type-level computation can be put to practical use.
  • Learn the inner workings of the Scala’s collections framework, how to extend it and how to apply the techniques it employs in your own designs.
  • Take away knowledge of how and when to use Scala compiler plugins to instrument and transform Scala code and how to extend Scala’s type system in domain-specific ways.
  • Learn what delimited continuations are, how they are implemented in Scala and how they can be applied to real world problems.

Course prerequisites

To benefit from this course you should have 6 months or more experience working with Scala or have already followed the Chuusai’s Core Scala course, and have good general understanding of object-oriented or functional programming language concepts and implementation.

Programme …

A deep dive into the Scala type system
  • Abstract types revisited
  • Path dependent types
  • Family polymorphism
  • Traits and self-types
  • The Cake pattern and the Bakery of Doom
  • Higher-kinded and structural types
  • Encoding existentials, virtual classes, higher-rank and ad hoc polymorphism
Extending the collections framework
  • A review of the collections framework
  • The role of higher-kinded types and ad hoc polymorphism
  • Builders
  • Working with Arrays and Strings
  • Crafting a new collection
An introduction to scalaz
  • Haskell origins
  • A selection of typeclasses
  • scalaz encodings
  • Ad hoc polymorphism vs. subtyping
  • Interop with the Scala standard library
Writing compiler plug-ins
  • Compiler phases
  • The scalac AST
  • Plug-ins to instrument Scala source
  • Plug-ins to augment behaviour
  • Plug-ins to extend the type system
Continuations
  • Varieties of continuation
  • shift/reset in Scala
  • Type-safe printf
  • Automatic resource management
  • Coroutines
  • Generators
  • Goto in Scala
Type-level computation
  • Church numerals and Peano arithmetic
  • Sized containers
  • Polymorphic function values
  • Heterogenous lists
  • Abstracting over arity
  • Scrap your boilerplate in Scala

Practical Scala: Tools, Libraries and Frameworks

Building and deploying production systems is about more than just programming language semantics. This course provides you and your team with the familiarity with the tools, libraries and frameworks which will allow you to take Scala successfully into production. The course has a practical focus, mixing presentation with in-depth hands-on labs and exercises. It is an ideal follow on to Chuusai’s Core Scala and Advanced Scala courses.

This course is currently in preparation. Please contact us if you would like advance notification of its availability

Course prerequisites

To benefit from this course you should have 6 months or more experience working with Scala or have already followed the Chuusai’s Core Scala course, and have good general understanding of the practicalities of building and deploying significant software systems.


Transitional Scala: Painless Migration from Java to Scala

Many Scala systems start their life as mission-critical Java systems which have been heavily invested in over many years. Successfully migrating such systems to Scala involves not only showing the benefits at the end of the process, but also showing that the transition process itself is manageable and can provide measurable incremental benefits along the way. This one day course is focussed exclusively on the nitty-gritty details of starting and successfully executing a gradual migration of a Java system to Scala where each step provides a clear net benefit. It is an ideal follow on to Chuusai’s Core Scala and Advanced Scala courses and a perfect complement to Practical Scala.

This course is currently in preparation. Please contact us if you would like advance notification of its availability

Course prerequisites

To benefit from this course you should have a good general understanding of the practicalities of building and deploying significant software systems and have some exposure to Scala, ideally having already followed Chuusai’s Core Scala course or equivalent.