This course introduces Cats Effect as a tool for building resource-safe and concurrent applications.

Cats Effect is a library that makes it easy to write code that effectively uses multiple cores and doesn’t leak resources. This makes building complex applications, such as highly concurrent services, much more productive. This course aims to introduce the core concepts in Cats Effect, giving you the knowledge you need to go further with the library in your own applications. This course is not, however, a detailed dive into every aspect of Cats Effect. Our aim is to cover everything you need to know and set you up so you can rapidly learn additional details on your own if needed.


To benefit from this course you should have about a year’s experience with Scala, or equivalent experience with a typed functional language such as Haskell or OCaml. Familiarity with functional programming methods like map, applicative mapN, and flatMap is required.


  • Encapsulate side-effects into a safer form, allowing them to be easily combined.
  • Learn how to run multiple tasks in parallel and gather results.
  • Integrate callback-based code, like scala.concurrent.Future, into a safer, effect-based interface.
  • Fork independent work into concurrent tasks, then cancel or join them.
  • Separate CPU-bound work from blocking, IO-bound work.
  • Build and combine resource-leak-proof dependencies for applications.
  • Test code that performs multiple effects like concurrency and I/O.


The course will be delivered online. It will consist of three sessions of 4 hours each. The sessions will start at 9:00AM PDT/UTC-7.