Coursera Course: Functional Programming Principles in Scala by Martin Odersky