Functional Programming Principles in Scala (coursera - École Polytechnique Fédérale de Lausanne)