These are some words that I never expected to say anymore during this lifetime. It’s always good to have a nice surprise and for me that was the “Functional Programming Principles in Scala” course on Coursera.
I won’t go into the details of the material but I just want to point out a few elements that I found to be very nice.
First, the video lectures are very nice and interesting, and the cherry on top, they are actually presented by Martin Odersky. I came across the course after being more than half though “Programming in Scala” by Martin Odersky, Lex Spoon and Bill Venners. If I could turn back time I would do it the other way around and I would start with the Coursera course. Anyway, they go hand in hand, and the materials and references presented are very nice.
The reference to “Structure and Interpretation of Computer Programs” by Harold Abelson and Gerald Jay Sussman with Julie Sussman, that Martin Odersky mentioned on multiple occasions finally sank in and I got a look at that as well. It really helps getting a larger perspective on things :) Don’t skip the wonderful introduction by Alan J. Perlis. Now, if I could really turn back time, I would go back 20 years and give myself this book.
The best part for me was the homework. This is what really got my juices flowing. First of all, they are really necessary to help with the shift from an OO world to an functional world. I am old and stupid, so each exercise took me a while, but man oh man, what a joy when you are done and experience the wonders of Scala. I was jumping around the house like happy kid each time I got it right and yes, you’ll know when it’s right because it will feel right and natural.
The hints for each assignment are “funny”, and the best tip that I got was: “Most of the solutions for this assignment can be written as one-liners. If you have more, you probably need to rethink your solution.” Their solution evaluation system is also nice and you get tips and hints on what you might have done wrong. It felt really good the first time I got a perfect score on the first submit.
I understand that this might not be everybody’s cup of cake, but if you are starting with Scala, don’t be shy and give it a try and try to do an assignment, and don’t get cocky, start from the beginning :)
I say it again, homework can be fun!