I know a few of the folks here at the Ranch have done this course too and I certainly found it to be very good indeed. Highly recommended if you want to learn a bit about Functional Programming and Scala.
+1 from me. This is an excellent course: challenging but very rewarding, and well worth exploring if you want to take advantage of the growing interest in FP and Scala in areas such as Big Data and concurrency/distributed processing, among many others.
I'm doing this course. Done with the first sample assignment ( heck that recursive max function took me about half an hour and they said it was kind of a no-assignment ), and the last but two video lectures, I think the course is quite good. Only it takes me more time than what they mention in the website.
I have already spent about 4 hours on getting things working and on the lectures. I mean we don't do just the lectures right. We also explore things a little bit to familiarize ourselves with the way things work in the functional space. So I have two lectures and the first assignment still pending and today I've got office work to do. Given the complexity of the assignment that they referred to as just the example assignment, I think the first assignment is also going to be time consuming/complex. But I'm not going to give up too easily is my plan. Till now, that is.
Sometimes I wonder why the duration of the coursera courses has to be just a month and a half. Couldn't they have considered people who have a full time job and who have to work on weekends occasionally.
This is not a sustainable model really.
Let's see for how long I can keep up with the course flow. Sigh.
I agree, the course is hard work. When I did it, I found I was doing more like 7-10 hours per week, not the 5-7 hours they claimed it should take. Possibly one reason for the 6 week timetable was that we were doing it alongside regular students at EPFL, who were doing the online units as part of their degree studies, and presumably this course had to fit the timetable for their lectures etc. Not sure if this is still the case, so maybe they could extend the course timetable now e.g. by giving online students more time to complete the assignments. Why not ask about this on the course forum at Coursera?
The course forums were very helpful when I did the course, so be sure to make the most of them.
Finally, you might find SICP very helpful for some of the first assignments, and Odersky's book is also very useful for some of the later assignments.
"Thanks to" Tim I registered yesterday for this course, being curious to learn what this Scala
thing is all about. And Chan's post is very encouraging. Having myself a very busy full day
occupation and a family as well, I hope I can spare a couple of hours in the weekends.
But now, I just followed the introduction. So I've just downloaded and installed the sbt, next
I gonna download eclipse (I've always used NetBeans).
So, IIUC, I have until tomorrow evening to get the first assignment done and sent in? It
looks I'm in for some busy hours...
Piet, first assignment is due in next week isn't it? Worth double checking before pulling an all nighter.
Joined: Mar 08, 2009
thanks for the info.
Yes, I've square ears at the moment listening to all the demo's, and I noticed
that the first assignment is due to May 11th. So, indeed, I can go to sleep before midnight ;)
But hooray! IIUC, I have to work with command line windows, with this sbt. Now what was
that 1930 dos command for changing to another folder? cd\? dir\p? OMG...
But first impression: a lot less verbose than Java! But it'll take some time getting used to.
Joined: Sep 06, 2012
Thanks for responding.
I have just taken a brief look into the SICP book and it seems the entire content of the first week is from the first chapter of this book. :-)
I will surely go through a few chapters of this book sometime later.
For those who missed the last session, a new session is scheduled to start on 15th of September, 2014. Hope you make the best use of it.
I started this out of curiosity about FP a couple of days ago. So far I hate both the course and the language! They throw you into the deep end, and (maybe because of that) the language itself seems kind of senseless. Would be better to cover more basics in the first couple of weeks I think, then make up time near the end if he needs to.
When I did this course in 2012, even I had the same feeling that the language is much bigger and denser. I would not say it is harder. It just requires a different mind set. It definitely takes time to grasp the basics.
The course from Coursera assumes that you have prior programming experience. Frankly speaking this does not hold true atleast for a programming language like Scala. I would however say that one has to do a bit of self reading other than the videos.
SCJP 1.4, SCWCD 1.4 - Hints for you, Certified Scrum Master
Did a rm -R / to find out that I lost my entire Linux installation!
Joe's right - Scala feels like a "denser" language than e.g. Java. The type system is very sophisticated and can be confusing, and functional programming is a very different approach to coding from OO, so this takes time to learn as well. However, it is possible to start out writing Scala as if it was a "better Java" i.e. mainly in OO style but taking advantage of some of the nice features of Scala like type inference, case classes, pattern-matching and the excellent Collections library.
The Coursera course is aimed at teaching you how to apply functional programming principles in Scala, i.e. the focus is on FP so it does not explicitly aim to teach you all about Scala. I think prior programming experience certainly helps, but most of all you need to be prepared to learn on your own as well. So you'll probably need to do some reading and practice writing Scala on your own e.g. check out the introductory material at Twitter's Scala School.
I enjoyed this course and learned a lot, but it was hard work. Good luck!
Guillermo Ishi wrote:
But I'm not sure it's necessary to change the way I think ;)
Tim's right. You should take this opportunity to try a new approach. After all, there's not much point in taking a course in functional programming if you 're not prepared to program in a functional style.
In any case, minimising mutability is one of the techniques recommended by Josh Bloch in "Effective Java". As he says in this interview, minimising mutability
Josh Bloch wrote:... tells you to keep the state space of each object as simple as possible. If an object is immutable, it can be in only one state, and you win big. You never have to worry about what state the object is in, and you can share it freely, with no need for synchronization. If you can't make an object immutable, at least minimize the amount of mutation that is possible. This makes it easier to use the object correctly.
So why not try it out? Change your vars to vals, and you may be surprised how rarely you need a mutable variable. And perhaps it will make you a better programmer in Java as well as Scala.
He's talking literally about mutable objects. He suggests disallowing inheritance, for that reason and also because it breaks encapsulation in his mind. He doesn't say anything about variables except to limit their scope, which has long been good practice in procedural languages.
I have an open mind but I will do whatever is most effective. The author of the course seems to want to reduce everything to mathematical formulas, which isn't going to always be the most effective thing.
That parens matching assignment, I have an open paren counter which is decremented when a close paren is encountered. It starts at zero and if it ever goes negative I return false and if it's non-zero at the end I return false. I think I see a way of doing it recursively by copying the list tail after looking at the head, but is it worth it?
Joined: Mar 08, 2009
If you would have taken the time to read some other topics in this forum, then you
would have read that it takes some getting used to Scala and what this course is
And by all means, use as many ' vars' as you like. Just don't expect to get
full marks. This ' StyleChecker' doesn't like them.
Stylechecker is trying to enforce not using the return keyword. I got get rid of them except for one case that it complains about where I get the wrong result if it isn't there.
Joined: Mar 08, 2009
many people do get the 100% score in the end. So, apparantly, it is always possible!
It took me about a week to get over the shock of doing without the semi colons and
the returns, but you get used to that so fast that, when using Java again, you hate it
that you have to use these things again.