Functional Programming Principles in Scala
Cource on coursera by Martin Odersky