Scala Advanced, Part 1 - The Scala Type System
What you'll learn
- Use the full Scala type system to correctly implement general purpose re-usable libraries and APIs for other Scala developers to use easily.
- A day-to-day working knowledge of the Scala language equivalent to completing Escalate Software's Scala Applied course is recommended before starting on the advanced course
- You will need to set up your laptop with Scala, SBT and IntelliJ IDEA with Scala support by following the setup instructions
- Experience with other statically typed languages (e.g. Java or C#) will be helpful but not required.
Scala Advanced, Part 1
The Escalate Software Scala Advanced course is intended for experienced Scala developers looking to improve their skills, particularly for library and API design and development. It covers topics needed to be effective in producing high quality, correct, powerful and flexible Scala libraries that are still easy to use by others.
Part 1 provides in depth knowledge of the Scala type system, an important precursor to any library development. We start off with a look at the dangers, and safe use, of mutable shared state in Scala, covering properties and caching. From there we delve into the Scala type system including:
- Co- and Contra-Variance
- Upper and Lower Bounds
- Type Inference
- Type Parameters and Type Members
- Path Dependent Types
- Refinement Types
- Structural Types
- Recursive Types
- F-bounded Polymorphism
The final two modules then move on to the secondary Implicits type system that augments the regular Scala type system, covering:
- Simple Implicit Parameters
- Type Classes
- Implicit classes, objects and methods
- Type Class Composition
- Implicit Constraints
- =:= and <:<
- Implicit Class and Type Tags
- Implicit Conversions
- extends AnyVal
Parts 2 and 3 (available separately) cover topics like best practices, idioms, patterns, advanced functional programming, asynchronous programming, parser-combinators, macros, performance profiling and optimization, and much more. These parts rely on information presented during this advanced part 1 course.
Who this course is for:
- Scala library and API developers, or Scala developers looking to improve their knowledge and skills
Dick is a Scala Developer with over 12 years of Scala development experience, and over 10 years of Scala training experience. As well as consulting in Scala, Dick contributes to a number of open source Scala projects, libraries and tools, and is very active in the Scala developer community. He is also one of the Scalawags, a video podcast about the Scala language. He runs Escalate Software which provides Scala training services. Dick also won the inaugural Phil Bagwell Award for Service to the Scala Community, and managed the Scala Community Process in 2015 through 2016