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://jetbrains.com/scala - JetBrains' IDEA + Scala plugin 
- https://scalameta.org/metals/docs/editors/vscode/ - Scala coding on VS Code 
 
Trusted by
 
				
				 
				
				 
				
				 
				
			