Functional-Programming-in-Scala For CS-210: https://edu.epfl.ch/coursebook/en/functional-programming-CS-210