October 09, 2012

I'm into the fourth week of my functional programming course on Coursera and while I like the course and the way it is presented through Coursera, I do have a couple of quibbles.

On the course description for my class the effort required of the students is given as 5-7 hours per week. I have easily invested twice that each week of the course so far. It may be that I am a slow learner and just need more time, but I think the time estimates are optimistic at best, and wildly off at worst. The set of lectures for the fourth week are two hours all by themselves. I fear the amount of effort to keep up with the class is only going to grow.

The course format says that class will consist of video lectures of 6 to 15 minutes length. The first week had 6 videos ranging from 4 minutes and 22 seconds up to 14 minutes and 32 seconds. The total was just under 62 minutes. Week two had 5 videos ranged from 4 minutes, 13 seconds to 14 minutes, 58 seconds, for a total of just under 53 minutes. Week three had 5 videos again, this time totally nearly 90 minutes. One video was over 25 minutes long. This week has 7 videos totally over 2 hours of viewing time.

The content in the videos is well done, and Martin Odersky is a fantastic teacher, but consuming a third of the expected weekly effort just in watching the videos once is getting away from the point of Coursera. I've watched most of the lectures twice and some of them three times - that's the point of having them. Having two hours of new material makes repeat watching an expensive proposition. While you can pause a video, it isn't easy to skip back a minute or two to rehear a point. You can grab the progress indicator and move it, but this is cumbersome. I wish they would implement a 10 or 30 second backward skip control on the player - it would make watching the videos even better.

My final quibble is the problem domains chosen for the assignments. With no prerequisites for the course I was unprepared for the rather mathematical nature of the problem sets. I understand that functional programming has lambda calculus at its root, but I wasn't prepared for the very abstract nature of the solutions. The code for the solutions has been amazingly short and succinct, the concepts behind the solutions have taken me hours to grasp. As this is my first exposure to any kind of functional programming I don't know if all functional programming solutions are so esoteric, or if the problem domain selected for these assignments makes it seem that way.

I am determined to complete the course -- so far I've gotten all the available points -- but I am finding it to be considerably more effort than I expected, and far more time consuming that advertised. I *am* getting an education in functional programming concepts in Scala from the man who created Scala -- for free, so I can't complain about the price, but I do recognize that Coursera is in its infancy and they have some course structure and presentation wrinkles to iron out.