Tuesday, September 25, 2012

First Week of Class: Functional Programming in Scala on Coursera

(Post by Mark Lewis, Associate Professor of Computer Science at Trinity University)

I just finished the first weeks lectures and assignments for Functional Programming Principles in Scala so it seemed appropriate to write a post on my first impressions. We were told in e-mails that this course has over 32,000 students enrolled in it. (Update: another source showed 40,000 as the number for the first week.) The fact that it is being taught by Martin Odersky, the creator of Scala, is inevitably a big factor in getting many people to register. Normally I don't know if a course on functional programming would garner so much interest, but there is no doubt that functional is seeing a general resurgence and the fact that Martin is the person behind the language is a huge factor. Nearly every Scala community I belong to has had notices about this course.

The quality of the teachers is probably one of the greatest strengths of MOOCs. The nature of these courses means that they fully enable the "superstar effect" to come into play in education. One teacher can now serve every person in the world who has an interest in learning about a particular topic. Granted, they do so through a one-way distribution mechanism of prerecorded videos and scripted automatic assessment. Then again, that doesn't sound too different from what actually takes place in large lecture halls. The internet just happens to be the world's largest lecture hall and anyone across the world can make it to lecture, regardless of actual physical location.

In this regard, Martin Odersky does not disappoint. The lectures are clear and insightful. The examples are definitely well thought out. I found that I appreciated and enjoyed what he had to say despite having significant experience in this area myself. Given my background, I did find the option to watch at faster than normal speeds to be quite helpful. 1.5x seemed about right for me. Going faster than that made the audio hard to understand. This is, of course, one of the great benefits of the video format. You can "attend lecture" when it suits you and you have control over things like speaking speed as well as the ability to rewind and watch segments again if needed.

I assume that the general format of the videos is something that is associated with Coursera. Early on there were scenes of Martin sitting in his office, but most of the time it was either slides or screen captures. The interface for the slides, with Martin's hand and a pen that could point and write were things I particularly appreciated. It reminded me of being back in school years ago when teachers would write on overhead projectors. This had a more personal feeling than a straight screen capture. IMO.

The occasional breaks for quizzing and to let students think about questions were very useful from a pedagogical standpoint. I did run into one problem though where I used a feature of Scala that hadn't been discussed yet and had the automated system tell me that my answer was incorrect because of it. This is the type of thing a human could easily spot and comment on. Being told that an answer was wrong when I knew was correct was a bit frustrating to me and I could see that really throwing off a novice student.

After the lecture videos, there was a little assignment with three problems. They were very well done and posed some challenge for the experienced student because you had to solve them with a limited set of constructs. The setup for working on the assignments and submitting them was easy to follow and the feedback was nearly instantaneous. They also provided test suites so that you could check your code against some tests before you submitted it.

One the whole, I was really impressed with the experience. It is only the first week, and there is a lot more to see, but this convinced me that for people like myself, Coursera and other MOOCs can provide a remarkably powerful resource for continuing education.

Of course, continuing education isn't really the purpose of this blog. This blog is about using these techniques in the context of normal college education and specifically how it could be useful for, or threatening to small, liberal arts institutions. I want to address this as four questions.

  1. Could the Coursera course be a drop-in for a course at a Primarily Undergraduate Institution (PUI)?
  2. If not, why not and what is missing?
  3. Could this MOOC be used to facilitate a normal PUI classroom?
  4. If not, why not? If so, what benefits would it provide?

Based on the first week of the course, here are my answers to these questions. I will try to revisit these in later posts to give some continuity to my observations.

  1. No. What I saw from the first week would not be a drop-in substitute for one of my courses or hopefully any other course on this topic at a PUI. While I can give that answer definitively, I also think that it would be reasonably easy to largely close that gap.
  2. The main problem is that there was too little of the course. There was only about an hour of video lecture and this is for a seven week class. The second week has slightly less than an hour of lectures. Compare that to ~40 hours of class meeting time for my normal courses. Granted, administrivia is all pushed outside of the lectures, but even given that, I feel they would need 1:30-1:45/week and a few more weeks to be a proper substitute for a 3-credit PUI course.

    Also missing were a lot more exercises and evaluation questions. The platform provides the ability to add these things, and they were used. However, I would want to see some exercises and questions that come at the end of each lecture as well as more inside of it. The assignment questions were appropriate, but other exercises that build up knowledge one step at a time would be required since you can't ask the instructor questions.
  3. Yes. In fact, after watching the first week's lectures I almost wanted to force the students in my "Principles of Functional Programming" course to sign up and watch. I didn't for two main reasons. The first is that we are currently working in Scheme, not Scala. While the thinking is similar, the students struggle enough with the very simple syntax of Scheme. Even though 70% of my students know Scala, I still don't feel it would be appropriate to try to mix things up like that in their brain. In addition, the first week of the MOOC was during the fifth week of my class. That causes a bit of a synchronization problem.
  4. I have already been playing with blended learning techniques and recording my own videos for students to watch outside of class. The system for the MOOC takes this an extra step up. I feel like if it weren't for the little problem where our semesters are not synchronized, I could ask students to basically take the MOOC and then add my own exercises and discussion on top of it to bring it up to the time level of a 3-credit course and also to fill in gaps when students don't grasp something and the resources associated with the MOOC aren't sufficient for them to fill in the gaps.

In general, I have a very positive view of this MOOC, but I have serious questions about whether it can function well for traditional students who are beginners and who lack direction or motivation. I can see some ways in which the MOOC could be altered to help close those gaps, but there are other things that I still can't see happening without a little bit of human interaction with someone who does understand the material. Perhaps more insight will come to me in future weeks. Even with those limitations, I feel that I could build a class around a MOOC where my role was more of a facilitator and it would make my workload for a single course much lighter, freeing me up to teach more courses or to do other things for the University.