Now that the first iteration of Coursera's "Functional Programming Principles In Scala" course is coming to an end, what did you all make of it, and what tips would you give other Ranchers who might be considering joining the course next time around?
Here's my tuppence worth to kick things off.
I think this was an excellent course, very challenging but also very rewarding, and I feel like I learned a lot. That might just reflect my starting point, however, as it seemed like there were a lot of people on the course who already knew a lot about FP and Scala. The course web page currently says the recommended background is:
I think this is a little misleading, and there were some students with this minimal background who definitely struggled. My own impression was that you probably needed at least some formal computer science background to make the most of this course, and perhaps maths at university entrance level as well. Given that this course was also being followed by CS students at EPFL, this is fair enough, but I think the "real" requirements should have been made clearer on the course web page beforehand.
On the other hand, the challenges presented by this course also encouraged me to dig deeper into the background material e.g. SICP was very helpful, and I think the core aims of the course were achieved successfully, even if it might have been hard work for some of us!
I think the FP side of the course was covered well, at least as far as you can hope for in a 7 week course, and I now feel I have a good foundation for exploring Scala and other FP languages further. On the Scala side, we didn't seem to cover a huge amount of ground, although the stuff that we did look at was covered pretty well, and we got a real insight into how elegant and concise Scala code can be. Lots of people have pointed to topics that would be interesting for a follow-up course e.g. mutability, use of actors, functional "design patterns", etc. The recommended books on Scala - Odersky's "Programing In Scala" and Cay Horstmann's "Scala for the Impatient" are both definitely worth getting hold of for a deeper insight into the language.
Not surprisingly, the workload seemed to vary hugely depending on people's prior experience. The website says the workload is "5-7 hours/week", which was far too low in my case. Most weeks I put in 10-15 hours, with the practical assignments in the last few weeks taking at least a full day's work each. This is not necessarily a bad thing - you learn by doing - but again, I think students should be given a more realistic estimate up front.
As for the online nature of the course, I think this was done very well here. The lectures etc were well presented and the recommended software platform worked fine for me (although some people had problems with Scala IDE). It's inevitable in an online course with up to 40,000 students that assessment has to be automated, which limits the kind of feedback you can get on your work, but the assignment grading system worked pretty well within those limitations.
The online forums (both at Coursera and here at JavaRanch) were very helpful in getting advice from fellow students, many of whom were clearly experts in this stuff, but there were a lot of forums to track if you were interested in keeping up with things, so I tended to focus on just a couple of useful ones. Course staff did contribute to these forums, but for the most part it was just other students. There were some issues with cheating, which was a shame, but most students were happy to abide by the "honour code" and avoid undermining the efforts of their fellow students and the course providers to make this a rewarding and worthwhile learning experience.
Overall, I was very impressed with this course specifically, and pretty impressed with Coursera generally. I'll definitely be looking out for opportunities to learn more about Scala/FP, and to take advantage of other Coursera courses on interesting topics.
Tips for future students:
Do some background reading beforehand e.g. look at SICP chapters 1 and 2 (very relevant for some of the assignments), one of the recommended Scala books or tutorials, or even something like "Learn You A Haskell" for an introduction to FP concepts.
Brush up a little on some concepts that might be helpful in the assignments e.g. basics of mathematical sets, lists, binary trees, breadth-first search. This is covered in the course anyway (except for set theory), but a little preparation will help.
Make sure you get your development environment (SBT, Scala IDE) set up as early as possible, and work through the initial ungraded assignment to make sure everything is working OK.
Be realistic about the workload - if you haven't done this stuff before, you'll probably need significantly more than the official estimate of 5-7 hours a week.
I had some previous experience with programming in Scala, but I don't program in a functional style every day.
I liked the course a lot because it was for a large part about functional programming, fortunately it was not just a simple introduction to Scala syntax. The level of the exercises was also just right - not too simple, some of them took me hours of puzzling, which made the feeling of satisfaction when finding the solution even greater. I really needed to sit down in a quiet room and concentrate on the exercises, they were not things that I could do quickly in between doing other things.
The organization of the course was great. The presentation with the videos was great, with Martin writing things overlaid on the slides. The development tools worked without any problem for me (I was working on Ubuntu) and the automatic grading also worked well.
I'm definitely going to keep an eye on other interesting courses on Coursera.
For future students: If you're brand new to Scala, I'd advise you to get a book and learn the syntax and play with the language a bit yourself before doing the course. If you have to learn Scala from the ground up while also solving the sometimes challenging exercises, I can imagine it would become overwhelming and you'd need a lot of time.
Unfortunately we're not allowed to share our solutions after the course, I would have liked to see how other people solved the problems.
I haven't used any functional programming since college. Having a course taught by the creator of Scala was definitely a draw. The lectures were clear. A good mix of quizzes (think about how you would approach this, what do you think would happen here) and explanation. I like that the homeworks used Scala's junit extensions and sbt (build tool.) Good practices and automation. It also provided a nice way to test the code. The homeworks varied a lot in difficultly. In particular, homework 6 was a lot harder than homework 5. Yet #5 had an extra week to work on it. There were good conversations in the forums. I took off half a star because I felt like we jumped around a lot. I really enjoyed the course though.
I agree, it would have been easier had I read more about Scala before the course started.
I'm a member of DuSE - the Dutch Scala Enthusiasts. TomTom here is indeed using Scala, we've had a few DuSE meetings there. Last month there was a talk at TomTom, where they explained what they did with Scala in one of their projects.
I'd like to work with Scala on a "real" project, but I'm working as a freelancer and I don't want to work as an employee on a permanent contract.
Jesper de Jong wrote:Did anybody get his / her certificate yet? I haven't received it yet.
You can get it via the Coursera Course Records page at https://www.coursera.org/account/records, or log in and then select "Course records" from the drop-down menu under your username (top right). I did this and downloaded mine yesterday, but when I tried it just now I got a "page is under maintenance" message. Don't get too excited though, as it's just a PDF with some blurb about the course and a grading based on your mark. Also, the marks on the Course Records page are given as if they were percentages, even though this course was really marked out of 80 e.g. I got 79/80 but this is presented as "79%". The mark doesn't appear on your certificate.
The certificates are now available. If you met the requirements for a normal certificate (score >= 60%, or 48pts), or a certificate with distinction (score >= 80%, or 64pts), you should be able to see your certificate listed at: https://www.coursera.org/account/records
Issues with displayed score: please note that there is currently an issue with how your score is being displayed to you on your records page. What is displayed to you on the records page is the total number of points that you received out of 80 total points, not a percentage. We're working on correcting this display issue. Your score is correctly computed (in points, not percentages), and your certificate is correctly issued.
Some people can see their certificates, and some still can't (like me). They're still working on it. Another update from Heather, just a few hours ago (same thread):
Hi all, the Coursera folks have been working on resolving these issues since yesterday. So the weird changes in state that you see (e.g. certificates available yesterday but point-based score + % symbol, and then today percentage but no certificates) is a bunch of work in progress. Stay tuned-- we're hoping for a final resolution shortly! Thanks for your patience!
Joined: Mar 05, 2008
As for me, I enjoyed the course. I had previously done some Scala at work, about 3 months' worth, so I was mostly looking for the FP angle. I enjoyed being prompted to think in new ways. The 5-7-hours-per-week estimate was about right for me, so I would certainly expect more for folks who hadn't learned about Scala previously. I got 100% on the assignments with only 1 resubmit, which was nice. Most of the solutions ended up looking fairly short and simple, once you wrapped your brain around the requirements and the FP paradigm. I would like to see a sequel to this course.
Oh, and Manning now has Functional Programming for Scala in their early access program. I just picked that up (what's available so far, anyway) so that should be interesting.
Joined: Mar 05, 2008
And my certificate just became available. "With Distinction", whatever exactly that means here.
Mike Simmons wrote:And my certificate just became available. "With Distinction", whatever exactly that means here.
"With distinction" means 80%+ (there's a little "?" on your course record that gives the details).
Did you see Martin's presentation where he showed some of the survey results? He was surprised that the average amount of time spent was less than the estimate, and the number of people classing the course as "challenging" was less than he expected. But then showed another graph that might explain it - the average educational background was higher than expected. About half the people (who filled in the survey) had a postgraduate degree.
I think I'm now hooked on Coursera - I'm currently doing two other courses, and have pre-registered for a couple more in the new year!
Joined: Mar 05, 2008
Thanks for pointing out the "with distinction" link.
I'm hooked as well. I've done the original Artificial Intelligence (well, that was from Stanford, before Coursera was formed), Algorithms: Design and Analysis, Part 1, and Algorithms I. I'm now up for the second parts of both Algorithms courses, and signed up for a bunch more. What I actually end up taking will be a small subset of what I'm signed up for, depending on when things actually end up starting. I want to avoid having more than one course at a time, as I don't have that much free time, and have other things to do with it. But it's fun. My wife is also hooked, on Genetics, History, and Argument courses so far.
Matthew Brown wrote:Did you see Martin's presentation where he showed some of the survey results? He was surprised that the average amount of time spent was less than the estimate, and the number of people classing the course as "challenging" was less than he expected.
Even I got my certificate just now. 100% with distinction.... I'm so excited that I really learned something through this course. This was almost the proper way that I ever learned a programming language. Even I'm now hooked to Coursera.