Martin Odersky's Coursera course on Functional Programming Principles in Scala.