As a Scala instructor, I often get asked about books for learning the language at different levels of expertise.

This is my attempt to summarize the best books out there.

Please, if you spot any omissions or inaccuracies, let me know.

Disclaimers

I have read some books thoroughly, but not all. Some I have evaluated with a rather fast scanning. So, if you disagree with my evaluation, ping me over twitter and I'll be happy to discuss.

I have no intention to diminish the work of any of the book authors. Putting a book together is a tremendous endeavour, and I'm very thankful for all the work they've done.

About the table below

I've classified books based on their target experience level, as such:

Beginner books, in green, require little related experience.

Intermediate books, in yellow, expect some level of knowledge in related technologies.

What about the other tags I've included?

Hands-on : Does the book provide code samples and exercises for the reader? (Minimal, Somewhat, Very)

: Does the book provide code samples and exercises for the reader? (Minimal, Somewhat, Very) Reference : Is this a good book to keep as reference material once you're somewhat comfortable and are starting to do real work with the language?

: Is this a good book to keep as reference material once you're somewhat comfortable and are starting to do real work with the language? FP ↔ OO: Where does this book fall in the Functional-Programming to Object-Oriented continuum? FP means the book is focuses on how to write code in Scala that meets the Functional Programming principles. OO means functions have a relatively short treatment and Functional Programming does not permeate most of the book. Hybrid means somewhere in between.

The books