When students used our interactive tryhaskell coding environment on the MOOC, we logged their IP address. I ran all 3000 IP addresses through a geo-locating service to generate the Google Map image below. Unsurprising, the most popular country was UK, but it was heartening to see people playing with Haskell from across the world!
I gave a talk about our FutureLearn Haskell course at the Haskell eXchange in London, this afternoon. The Haskell experts in the room had lots of useful feedback for us, which I’ll summarize here.
- syntax highlighting is _really_ important. Can we do syntax highlighting in tryHaskell?
- should Glasgow students have the opportunity to watch the course videos together, on campus. This would be a kind of ‘Haskell cinema’ which would promote shared learning and peer support.
- people who have never programmed before and people who have programmed in imperative languages need _different_ learning strategies.
I met several people at the Haskell eXchange who have signed up for our FutureLearn course – it was great to meet them and talk about their (mostly positive!) experiences.
This is an excerpt from an email I sent to our academic overlords at Glasgow to report on the status of our Haskell MOOC after the first week.
I’m delighted with the way our course is going. We have over 5000 signups now, and over 1000 people logging in and engaging with the learning materials.
There were a few typos and minor mistakes in the articles and video captions, but as these have come to light, I have been correcting them very quickly. There is a kind of slip-stream effect – the first learners on an activity are able to identify any problems before everyone else gets there – then I fix things up quickly!
The load balancing seems ok – we are now running on three Amazon cloud servers and we seem to be coping with demand.
I’ve been very impressed with the immediate sense of community, in the comments. People are ‘owning’ the course, and helping each other out with conceptual and technical problems. This is highly encouraging. Along with three (PhD) mentors, I have been monitoring the comments and adding my own comment if necessary.
We thought a while ago about a second course in ‘Advanced Functional Programming’. Already there is some demand for this from the learners. So we will have to try and put together a proposal for this – and investigate whether the university would fund this…
When we prepared our video lectures for the Haskell course, we sent them off to a Closed Captioning service to generate the subtitles. We strongly suspect that the people doing the subtitling did not know any functional programming – at least, not before they started.
This resulted in some humorous mis-transcriptions. I’m going to record my favourite instances here, so I don’t forget these classics.
I said ‘lambda abstraction‘. They heard ‘lambda obstruction‘.
Wim said ‘compact syntax’. They heard ‘complex syntax’.
I said ‘Haskell programming’. They heard ‘high school programming’,
I said ‘Glasgow Haskell Compiler’. They heard ‘classic Haskell compiler’.
There are lots more examples, check our github repo logs for details.
Our Glasgow Haskell MOOC started just after midnight, early Monday morning, 19th September. I was slightly caught out, because I was still tweaking our online Haskell programming environment when the course went live! I quickly finished my edits and deployed the code on Amazon Elastic Container Service, so it was ready for the eager learners.
The first few learners to start the course were like swarming ants – energetically exploring all the activities and posting comments about typos and other minor glitches. So I was able to iron out lots of typos and inconsistencies before the bulk of the learners saw most of the material.
Lesson 1 – fix bugs early and often.
I was a little worried that our online Haskell interpreter would not scale to meet the demand of hundreds of learners – however it seems to have coped very well indeed. We are running 10 medium sized AWS instances, each one hosting a Docker container with the tryHaskell web server running on it. We have not exceeded 5% overall CPU load across the cluster – so we probably only need 1 or 2 instances in general.
Lesson 2 – cloud computing enables scalable provisioning for server tasks
Well, I haven’t actually scaled down yet – I will reduce the number of VMs and Docker containers once I get my head round the amazingly complex Amazon interface 🙂 UPDATE I have scaled down to 4 AWS instances now, and everything still seems to be running ok.
One of the most impressive aspects of the course, to me at least, has been the level of engagement from the learners. This is very evident in the Comments section attached to each page of the course material. Learners are very keen to find and fix bugs — and, more importantly, to discuss ideas and misunderstandings with other learners. We have a team of 3 mentors (PhD students from Glasgow) and myself, who all respond to comments where we can. However it’s brilliant to see the learners supporting each other.
Lesson 3 – peer assisted learning is the ‘default’ for MOOCs
We have 3964 learners signed up for our FutureLearn Haskell MOOC. We have 108 students enrolled for our Glasgow University Functional Programming course (the face-to-face version of the MOOC).
So – lots of people will be learning Haskell over the next six weeks! These numbers are down on what we wanted. When we scoped out the course we were aiming for 10k learners and 120 face-to-face students. But we are very happy with the numbers so far. Let’s hope the students are equally happy with our course! It starts Monday!
I pulled an all-nighter to address the (very long) list of content issues from Claire, our FutureLearn contact. Most of them are sorted now, so just a little bit of academic ironing to do over the weekend. Oh, and lots of spamming to try and get closer to that 10k target 🙂
For the past few months, Wim and I have been steadily producing videos, articles and quizzes for our online Haskell course. We have also adapted the excellent tryhaskell platform, to run our interactive exercises.
Our ‘Functional Programming in Haskell‘ course is due to launch on Monday (19 Sep) and we are starting to panic!
- we are still generating subtitles for our videos. Subtitling is outsourced, but when we get the .txt files back, they require judicious editing. “Haskell programming” turned into “high school programming” in one subtitle file 🙂
- our tryhaskell interactive REPL is working ok on local machines, but we want to run it on an Amazon load-balanced server. Amazon web services are incredibly fiddly to set up! We struggled with this for a week.
- our learning platform (FutureLearn) want all content to be hosted on https, so we need an official SSL certificate. This is quite hard to set up too – for a novice like me. I have to buy a domain name, configure DNS and mail forwarding, generate a private key, generate a certificate signing request and then send this to someone reputable to sign it. A big thank you to Mythic Beasts who helped me with all this wizardry.