What you'll learn:
- Advanced Functional Programming, Tail Calls, Trampolines, Functors, Monads, Applicative Functors, Different Monad Patterns
- Macros, Scala Compiler Phases, Abstract Syntax Trees, Quasiquotes, When and how to use macros
- Parser Combinators, External DSLs, Grammar Translation, Transformers, Parsing, Packrat Parsers
- Performance Optimization, JVM Performance Tricks, Profiling, Visual VM
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.
This course assumes you have day-to-day Scala development skills equivalent to having taken the Scala Advanced course parts 1 and 2 from Escalate Software. If you have trouble understanding or following the concepts in this course because some of the concepts being presented are assuming something you are unfamiliar with, then we would recommend you check out the Applied courses as these will answer many of your questions.
Part 3covers advanced functional programming concepts and patterns, use of Macros, how to write external DSLs with the parser-combinator library, and how to effectively optimize code by analyzing performance:
Functional Programming Building Blocks: ADTs, trampolines, recursion, functions
Functional Programming Patterns: Functors, Monads, Applicative Functors
Common Functional Patterns: IO, Reader, Writer, State, Free
Macros and Quasiquotes
External DSLs and Scala's Parser-Combinator Library
Profiling and Optimization
Code Performance Considerations
It is recommended that you complete Scala Advanced parts 1 and 2 before taking this part. While not strictly necessary, we may assume knowledge from parts 1 and 2 in some of the explanations that could be hard to follow unless you know the material.
This is the final part of the Advanced Scala course. We hope you enjoyed the course and that the material proves useful.