I’ve seen my share of programming classes over the years (some of which were really good), but I found a new favorite just a couple months ago. The online learning site Coursera was offering “Functional Programming Principles in Scala” by Martin Odersky. Aside from wanting to take a closer look at Scala for quite a while, it was also pretty interesting for me to try out the online class format.
The lecture material was presented in on average 15 minute long videos. They were either showing progress through a set of slides (the recording is showing Odersky’s hand + pen guiding through the bullet points and adding handwritten notes) or screen casts of programming in the IDE. Both formats were very well recorded, clear sound, no annoyances. Slides and videos were downloadable (pdf and mp4) — great for watching on the phone during my morning commute.
The classes were complemented by a total of seven quite crisp assignments that were submitted to an automatic grader after completion. The assignment packages shipped with a set of unit tests that made it easy to check what was expected and also helped to catch how to write additional tests. You would also get feedback from the tests the grader engine ran and could resubmit up to 4 times with improvements. Again, everything nicely documented and well organized.
Overall my main takeaway is, that the simple option of rewinding a lecture like this is pretty priceless. In traditional classrooms, when you don’t understand something on the first try, you are stuck with following the rest of a lecture and catching up offline somehow. Even worse, part of your attention gets split off and tries to figure out in parallel what you missed, making it more likely that you will run into even more problems. Here you just jump back as often as you need. And even better, if you need to stare at a slide for a few minutes before progressing, you do so without getting on anyone’s nerves.
This was my first try with an online class — I hope that I did not just happen to find the best one out there on the first try… 😉