Programming Assignments (Functional Programming Principles in Scala by Martin Odersky)