Martin Odersky:
Learn about functional programming, and how it can be effectively combined with object-oriented programming. Gain practice in writing clean functional code, using the Scala programming language.
https://www.coursera.org/course/progfun