Functional Programming Principles in Scala: https://class.coursera.org/progfun-003