Skip to main content

Lightbend Scala Language - Expert
Enrollment in this course is by invitation only

Unleash the power of Scala's type system.
Enrollment in this course is by invitation only



On-site and Remote Options Available

This is a three day course with a live instructor offered to private groups of 5-12 people. At this time, we do not offer the course to individuals. Please contact us to arrange a your group booking. Please ensure you include the name of the course you are inquiring about.


About This Course

The power of Scala’s type system, unleashed - advanced object functional programming, implicits, and more. Leverage rich language features to create well-designed libraries or DSL’s, utilizing proven best practices.


  • Developers who have experience and proficiency in Scala including topics covered in “Lightbend Scala Language - Professional”
  • Developers who want to understand advanced features in Scala
  • Managers who want to gain a deep understanding of functional programming


  • Developers gain knowledge and skills to confidently program in Scala at a high level
  • Certified Lightbend Trainers share deep insights that drive business results
  • Advance to the limits of Scala capability!


  • Level: Advanced - knowledge of and practical experience with Scala is assumed as taught in Lightbend Scala Language - Professional
  • Length: Three days - 21 hours of classroom time, plus breaks
  • Approach: Hands-on mastery - students code through workshop case study and explore how to solve the toughest Scala challenges in their own work
  • Requirements: Students bring their own laptops with Java 8

Course Syllabus

  • Recap of important basics
  • Object-Functional Programming in Depth
    • Recursion and tail-recursion
    • Partial functions and partial function literals
    • Curried methods, partially applied functions
    • Lifting methods into functions
    • Folding
  • Mastering the Type System
    • Scala type hierarchy
    • Value classes
    • Type parameters
    • Variance
    • Package objects
    • Lower and upper bounds
    • (Abstract) Type members
    • Singleton Types
    • Type refinements
    • Static duck-typing
    • Path-dependent types
    • Self Types
  • Explicitly Implicit
    • Implicit conversions
    • Implicit resolution, scopes and precedence
    • Library extension via implicit (value) classes
    • Implicit parameters
    • Implicit Values
    • Type classes
    • Implicit parameter chaining
    • Type class examples in the Scala core library
    • Type constructors
    • Context bounds
    • Type witnesses
    • Type tags
  • Domain Specific Languages (DSLs)
    • DSL Building blocks:
      • By-name parameters
      • Currying
      • Higher-order functions
      • Dot-free operator notation
      • Implicit conversions
    • Phantom types
    • Finite State Machines (FSM)
  • Scala Futures and Promises
    • Execution contexts and Thread Pools
    • Creating & working with Futures
    • Futures & Failures - callbacks & recovery
    • Futures, concurrency & parallelism
    • Future.sequence/Future.traverse
    • Creating an already completed Future
    • Dealing with Future[Option[_]] and for comprehensions
    • Futures - Do's and Don'ts
    • Promises
  • Custom Scala Collections
    • Uniform return type principle
    • Collection Builders
    • Like traits
    • Type classes for the tricky cases
Enrollment in this course is by invitation only