Programming in Scala: A Comprehensive Step-by-step Guide