I subscribe to the school of thought that learning should never end, and I also believe that as a software developer it’s important to learn new programming languages yearly.
After learning about Coursera and hearing that Martin Odersky was going to be teach a course covering functional programming titled Functional Programming Principles in Scala, I had to sign up. The class is a 7 week long introduction to functional programming principals using the Scala programming language.
Week One: Programming paradigms; overview of functional programming and the Scala programming language.
Week Two: Defining and using functions, recursion and non-termination, working with functions as values, reasoning by reduction.
Week Three: Defining and using immutable objects, review of inheritance and dynamic binding.
Week Four: Working with collections: Sequences, sets and maps
Week Five: Defining recursive data and decomposition with pattern matching.
Week Six: Reasoning about functions
Week Seven: Case study
Each week, on Tuesdays, students are presented with a series of lectures by Martin that cover the week’s topic. The lectures include prepared slides, writing on a virtual whiteboard and live code examples and run 2-3 hours per week.
After listening to the lectures for the week there are homework assignments which exercise the material reviewed in the lectures. Pretty common for a college course.
I have to admit the assignments are hard. I am always up for a challenge with a new language but the assignments go well beyond general Scala syntax or basic functional programming paradigms. These lectures force the student to learn (or remember) computer science and mathematics from my early days of algorithm and data structures from college. No complaints here, all really good stuff, but it took some research to recall some of these things.
Would I recommend this class? You bet! It was a great class and I learned ton. Scala was a language that I wanted to have a look at and this course was a great introduction but assumed a background in programming and did not cover the basics.
One things that annoys me is that most programming books start with the very basics of a language, trying to cater to the widest audience possible. This leaves most books with only 1/2 of their content really unique and usable.
After spending some time with Scala, I decided I was not a fan and won’t be using the language for future projects. I love the idea of functional programming, lots of small functions with specific functions, but Scala is way too verbose for my liking. It just looks like functional Java and not different enough from Java or C# for that matter to attract me to use it. I think Scala drove me to appreciate Clojure much more and I will be writing a lot more parentheses because of it.
I think it’s good to see other programming languages and styles. Scala works for some but not all.