aspose file tools*
The moose likes Functional Programming and the fly likes Coursera: Functional Programming Principles in Scala (free online course) Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » Functional Programming
Bookmark "Coursera: Functional Programming Principles in Scala (free online course)" Watch "Coursera: Functional Programming Principles in Scala (free online course)" New topic
Forums: Functional Programming Scala
Author

Coursera: Functional Programming Principles in Scala (free online course)

Tim Cooke
Bartender

Joined: Mar 28, 2008
Posts: 1238
    
  67

For those who have missed the previous runs of this excellent course. It's back, and has just started.

https://www.coursera.org/course/progfun

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.


Tim Driven Development
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1873
    
  16

+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.


No more Blub for me, thank you, Vicar.
Chan Ag
Bartender

Joined: Sep 06, 2012
Posts: 1049
    
  15
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.

<Rant>
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.
</Rant>

Let's see for how long I can keep up with the course flow. Sigh.
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1873
    
  16

Hi Chan

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.

Good luck - it's hard work but it's only 6 weeks!
Piet Souris
Ranch Hand

Joined: Mar 08, 2009
Posts: 700
    
  11
Hmmm... sounds promising.

"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...

If I need any tips, I'll let you know.

Greetz,
Piet
Tim Cooke
Bartender

Joined: Mar 28, 2008
Posts: 1238
    
  67

Piet, first assignment is due in next week isn't it? Worth double checking before pulling an all nighter.
Piet Souris
Ranch Hand

Joined: Mar 08, 2009
Posts: 700
    
  11
hi Tim,

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.

Greetz,
Piet
Chan Ag
Bartender

Joined: Sep 06, 2012
Posts: 1049
    
  15
Hi Chris,

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.

Chan.





Sugantha Jeevankumar
Ranch Hand

Joined: Jun 06, 2007
Posts: 93
Hi Everyone

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.

SCJP 5.0
Guillermo Ishi
Ranch Hand

Joined: Jul 28, 2014
Posts: 139
    
    1
Sugantha Jeevankumar wrote:Hi Everyone

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.
Joe Harry
Ranch Hand

Joined: Sep 26, 2006
Posts: 9629
    
    2

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!
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1873
    
  16

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
Ranch Hand

Joined: Jul 28, 2014
Posts: 139
    
    1
I'm taking it... as long as it will keep letting me use mutable variables. I have a lot on my plate.
Tim Cooke
Bartender

Joined: Mar 28, 2008
Posts: 1238
    
  67

Guillermo Ishi wrote:as long as it will keep letting me use mutable variables

... and by doing so you will miss one of the key techniques of Functional Programming. Try to let this one go and open your mind to all of what's being taught on the course.
Guillermo Ishi
Ranch Hand

Joined: Jul 28, 2014
Posts: 139
    
    1
Tim Cooke wrote:
Guillermo Ishi wrote:as long as it will keep letting me use mutable variables

... and by doing so you will miss one of the key techniques of Functional Programming. Try to let this one go and open your mind to all of what's being taught on the course.


But I'm not sure it's necessary to change the way I think ;)
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1873
    
  16

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.
Guillermo Ishi
Ranch Hand

Joined: Jul 28, 2014
Posts: 139
    
    1
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?
Piet Souris
Ranch Hand

Joined: Mar 08, 2009
Posts: 700
    
  11
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
all about,

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.

Greetz,
Piet
Guillermo Ishi
Ranch Hand

Joined: Jul 28, 2014
Posts: 139
    
    1
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.
Can't win

Piet Souris
Ranch Hand

Joined: Mar 08, 2009
Posts: 700
    
  11
Well,

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.

Greetz,
Piet
Guillermo Ishi
Ranch Hand

Joined: Jul 28, 2014
Posts: 139
    
    1
Piet Souris wrote:Well,
the shock of doing without the semi colons


Java wants you to put semicolons everywhere. It won't complain

;;public static void main(String...args){;;;;;
;;;;String s = "say hello";;;;;
;;;;System.out.println(s);;;;
;;;;};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Coursera: Functional Programming Principles in Scala (free online course)