Actions and Detail Panel
Advanced Scala with Cats (Public Course)
Thu, 11 May 2017, 09:00 – Fri, 12 May 2017, 17:00 BST
About the course
Advanced Scala with Cats is aimed at experienced Scala developers who want to take the next step in engineering robust and scalable systems. The course teaches six key abstractions of: monoids, functors, monads, monad transformers, applicative functors, and traversals, using the implementations in the Cats library.
Through a series of projects we show you how these abstractions can be used to engineer solutions to practical problems in data analysis, data validation, input parsing, error handling, and more.
The main goal of this course is to teach system architecture and design using the techniques of modern functional programming. This means designing systems as small composable units, expressing constraints and interactions via the type system, and using composition to guide the construction of large systems in a way that maintains the original architectural vision.
The course also serves as an introduction to the Cats library. We use abstractions from Cats, and we explain the structure of Cats so you can use it without fear in your own code base. The broad ideas are not specific to Cats,
but Cats provides an excellent implementation that is beneficial to learn in its own right.
The course materials include the books Advanced Scala with Cats and Essential Interpreters. You will receive free updates to the books for their lifetime.
Advanced Scala is split across two days:
On Day 1 we cover the main theoretical patterns of the course: monoids, functors, monads, monad transformers, applicative functors, and traversals. We discuss the theoretical concepts themselves and their implementation in Cats.
On Day 2 we put this knowledge to practice, working on extended case studies that apply the theory to practical problems. We tailor the case studies to the combined interests of the attendees. In previous courses we have implemented the following:
- multi-core map-reduce;
- probabilistic modelling;
- applicative data validation;
- distributed computations involving CRDTs;
- parser combinator based DSLs.
The full course content is available on the course home page.
Who's teaching the course?
This course will be taught by Noel Welsh.
What will you need?
You must have:
- your own laptop with Scala installed;
- significant prior experience with Scala.
Diversity discounts are available via the event page on the Underscore web site.