Martin Odersky's Functional Programming Principles in Scala on Coursera progfun-005