About the course
Our Advanced Scala programming training course is aimed at existing Scala developers who are looking to improve the functionality and performance of their Scala applications.
This hands-on Scala course will improve your skills in Pattern Matching with Scala, take your Functional Programming to the next level, and leverage the Type system too.
We're happy to discuss your team's specific requirements, so if you're potentially interested in a custom course which takes into account your team's existing skills, your project requirements and use cases, let us know so we can put together a syllabus which focuses on providing the best value to your business.
Online and in-house face-to-face options are available - as part of a wider customised training programme, or as a standalone workshop, on-site at your offices or at one of many flexible meeting spaces in the UK and around the World.
-
- Value Types
- Design Patterns in Scala
- Functional Programming
- Higher Order Functions and Collections
- Stackable Traits
- Futures and Promises
- Actor Lifecycle, Configuration and Dispatchers
- Actors & Actor Testing with Akka Testkit
-
Developers who are already familiar with Scala, who need to understand some of the more advanced features of the language.
-
You should have attended our Scala Programming training course or have equivalent familiarity with writing and running Scala code, along with topics such as the basics of functional Scala, pattern matching and traits.
-
This advanced Scala course is available for private / custom delivery for your team - as an in-house face-to-face workshop at your location of choice, or as online instructor-led training via MS Teams (or your own preferred platform).
Get in touch to find out how we can deliver tailored training which focuses on your project requirements and learning goals.
-
Course Overview
Welcome and Introductions
Plan for Course
Value types
Value Classes and AnyVal
How to define Value classes
Limitations of Value Classes
When to use Value Classes
Universal Traits
Universal Traits and Inheritance
To Trait or Not to Trait
Functional Programming
What is Functional Programming?
Characteristics of FP
Functions as First Class Elements
Function Objects
Pure Functions & Referential Transparency
Promotes Declarative Style
Preference for Recursion
Composable Functions
Data Structures
Immutability & Transform rather than Mutate
Functional Programming in Scala
Functions reviewed
Closures
Functions and methods
Tail Recursive Functions
Partially Applied Functions
Currying
Partial Functions
Lazy Evaluation
Pass by Value v Pass by Reference
Immutability
Immutability Pattern
Arguments for Immutable Objects
Value Classes and Immutability
Meter Immutable Value Class
Immutable Domain Classes
Why is this Interesting?
Building an Immutable Invoice
Higher Order Functions and Collections
Introduction Higher Order Functions
Functions as Parameters
Using types for function definitions
Functions as Return results
Collection Higher Order Functions
foreach, map, filter, foldLeft, foldRight, flattern, flatMap
Working with Streams
Using LazyLists
Functional Design patterns
Functors
Applicative Functors
Monoids
Monads
Foldable
Zippers
Lenses
Stackable Traits
Single Abstract Method Traits
Stackable traits
Traits with Stackable Modifications
Traits and the Strategy Pattern
Using Traits to implement Strategy
Futures and Promises
Why Asynchronous Programming
Futures
Scala Futures
Futures and Completion (success and failure)
Futures and Waiting
Futures and FP
Multiple Futures
Promises
Scala Promises
Futures and Promises
Why Asynchronous Programming
Futures
Scala Futures
Futures and Completion (success and failure)
Futures and Waiting
Futures and FP
Multiple Futures
Promises
Scala Promises
Actor Lifecycle, Configuration and Dispatchers
Actor Lifecycle
Lifecycle Methods
Property Configuration Factory Pattern
Passing Parameters to Actor Constructors
Akka Configuration
Dispatchers
Actors and Parallelism
Using the Thread Pool Dispatcher
Actor Testing with Akka Testkit
Akka Testing toolkit
Adding Akka Testkit
Actor to test
Testing an Actor
Provided expect* assertions
Akka Actor Results & Futures
Returning a Result from an Actor
Using a Future
Parent Child Hierarchies
Root of all Actors
Supervisor Example
Persistent Actors
Motivation
Akka Persistence
Akka Persistence Architecture
Persistent Actor
Configuration of Persistent Actors
Persistent Actor Application
-
https://www.scala-lang.org/ - get Scala!
https://www.jetbrains.com/pages/scala/ - JetBrains' IntelliJ IDEA + Scala plugin
https://scalameta.org/metals/docs/editors/vscode/ - Scala coding on VS Code
Trusted by