Functional programming is one of those generic “scary” programming phrases like “concurrency” or “cryptography.” We know it’s probably useful, but we can usually get by without it. While I vaguely knew a little about Haskell, I wasn’t really sure what functional programming was before I took Coursera’s Functional Programming Principles in Scala. But, I felt obligated as a programmer to set aside my fears and jump in.
I noticed two things about the class immediately:
- The instructor is Martin Odersky, the author of the Scala programming language.
- The class is only seven weeks long.
As it turned out, these ended up being two of my favorite things about the class.
Although Scala is used, the class isn’t really about Scala. Rather, Scala is a tool to learn about functional programming. Nonetheless, it was exciting to get Odersky’s perspective on functional programming and his approach to implementing it via Scala. Being such a big name in computer science, there is an additional certainty that the instructor knows what he is talking about–something that you can’t always be sure of in MOOCs.
The duration of the class was shorter than the other Coursera classes I’ve taken, but I found it refreshing. Sometimes, by the 8th or 9th week I’m feeling bored or annoyed with a class. Seven weeks went by very quickly but still managed to be long enough to get an intro to the main concepts of functional programming.
The only part of this class that I found occasionally frustrating was the weekly homework assignments. In general, they are well thought-out and guided, but I definitely got stuck a few times. It would have been nice to see “correct” implementations after receiving a grade. For example, there are many situations when a for-loop, fold, or map would all work correctly, but I was unsure of what implementation would be best. There’s also the issue of googling “how to X in Scala” only to get four or five different possibilities. Upon implementing one of them, there’s always the nagging feeling that Odersky has something else in mind.
Despite this frustration, I still highly recommend the class. If you are interested in functional programming (or even if you want to get a taste of Scala), this is a fun class that won’t take up too much of your time.