wood burning stoves*
The moose likes Functional Programming and the fly likes Coursera course overload! Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Engineering » Functional Programming
Bookmark "Coursera course overload!" Watch "Coursera course overload!" New topic
Author

Coursera course overload!

Sean Corfield
Ranch Hand

Joined: Feb 09, 2011
Posts: 252
    
    5

After a very short respite, UBC's "Introduction to Systematic Program Design Part 1" just started back up for its second run. An excellent course, run by Prof. Gregor Kiczales (author of "The Art of the Metaobject Protocol"), using the teaching languages from Racket to teach systematic - recipe-based - program design in a functional way. See https://www.coursera.org/course/programdesign for more details. I'm a Community TA on this run.

Martin Odersky's excellent "Functional Programming Principles in Scala" also just started up on its second run. I missed it first time around but wanted to take it this time since it's a pre-requisite for his upcoming "Principles of Reactive Programming". See https://www.coursera.org/course/progfun and https://www.coursera.org/course/reactive for more details. I'd forgotten how enormous Eclipse is - it's the IDE of choice for this course and I haven't used it for several years!

Also coming back for a second run is U. Washington's "Programming Languages" course in which Prof. Dan Grossman teaches functional programming (and some OOP) via Standard ML, Racket, and Ruby. This starts on October 3rd. See https://www.coursera.org/course/proglang for more details. I think I've been selected as a Community TA on this one too.
J. Kevin Robbins
Bartender

Joined: Dec 16, 2010
Posts: 823
    
  13

Overload is right. I took "Intro to Systematic Program Design" the last time it was offered, and I was hopelessly lost by week 5 and unable to complete the course. I doubt that I will attempt it again.

If "Programming Languages" is the one that requires you to use EMACS, I dropped out of that one last time, too. I spent most of my time learning EMACS instead of the course material. Very frustrating.

I'm taking the Scala course this time and I'm already struggling with the first assignment. The Pascals Triangle problem has me mystified. I'm not hopeful about making it through this course either.

I think I'm just not smart enough to learn functional programming. I don't have the required mathematics background. It seems like a computer science degree is required to understand the math behind these problems.

maybe I should go to dental school or something...



"The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do." -- Ted Nelson
Sean Corfield
Ranch Hand

Joined: Feb 09, 2011
Posts: 252
    
    5

J. Kevin Robbins wrote:Overload is right. I took "Intro to Systematic Program Design" the last time it was offered, and I was hopelessly lost by week 5 and unable to complete the course. I doubt that I will attempt it again.

They've changed the pacing for the second run of the course - extending it to ten weeks and breaking the homework and quizzes up into more manageable pieces (there will be 16 quizzes this time, and three peer assessed projects).
J. Kevin Robbins wrote:If "Programming Languages" is the one that requires you to use EMACS, I dropped out of that one last time, too. I spent most of my time learning EMACS instead of the course material. Very frustrating.

I can usually get folks up and running with the basics of Emacs in an hour and you don't need much more than that to get through the PL course - and to be honest you didn't need to use Emacs, you could have used any text editor and the REPL running separately for Standard ML and Ruby (and the DrRacket IDE for the Racket segment).
J. Kevin Robbins wrote:I'm taking the Scala course this time and I'm already struggling with the first assignment. The Pascals Triangle problem has me mystified. I'm not hopeful about making it through this course either.

The countChange function took me a while - Pascal's Triangle was pretty straightforward by comparison. I was a bit surprised at how little Scala the lectures have covered so far. That first assignment was a bit abrupt! It was "Here's some theory... now go write some Scala!". I'll be interested to see how it progresses, esp. since one of my colleagues is having a go at the course and he's not used to strongly typed languages, nor Java, so it'll be pretty unfamiliar to him.
J. Kevin Robbins wrote:I think I'm just not smart enough to learn functional programming. I don't have the required mathematics background. It seems like a computer science degree is required to understand the math behind these problems.

The SPD course is aimed at complete beginners and FP doesn't require a mathematics background, nor computer science. I suspect you're just very used to the OOP way of thinking and unlearning that can be pretty tough when you first encounter FP. What languages have you worked with so far in your career? If the answer is "primarily Java" then you'll have a lot of baggage and "bad thinking" to let go of, in order to pick up the (much simpler) approach of immutable data and pure functions. It really is much simpler but it will seem extremely alien at first...

Feel free to ping me for help on the assignments and FP in general, if you think that'll help. If you use IRC, there's a #courseraprogfun channel on freenode for the Scala course and I'm usually in there. Or reach out to me via PM here...
Matthew Brown
Bartender

Joined: Apr 06, 2010
Posts: 4338
    
    7

Sean Corfield wrote:Also coming back for a second run is U. Washington's "Programming Languages" course in which Prof. Dan Grossman teaches functional programming (and some OOP) via Standard ML, Racket, and Ruby. This starts on October 3rd. See https://www.coursera.org/course/proglang for more details. I think I've been selected as a Community TA on this one too.


I was tempted to apply to be a Community TA on that one as well, but decided I'm too busy overdosing on taking MOOCs at the moment to get involved like that.
J. Kevin Robbins
Bartender

Joined: Dec 16, 2010
Posts: 823
    
  13

Sean Corfield wrote:They've changed the pacing for the second run of the course - extending it to ten weeks and breaking the homework and quizzes up into more manageable pieces (there will be 16 quizzes this time, and three peer assessed projects).

That's a good change. There were lots of complaints in the forum about the pace of the course and the hours required. I was spending 15 to 20 hours a week on it. Crazy. But I was hanging in there until we got to mutually recursive functions, then I thought my head was going to explode.
Sean Corfield wrote:I can usually get folks up and running with the basics of Emacs in an hour and you don't need much more than that to get through the PL course - and to be honest you didn't need to use Emacs, you could have used any text editor and the REPL running separately for Standard ML and Ruby (and the DrRacket IDE for the Racket segment).

I wish they had demonstrated how to run it all from the command line. I had my Emacs cheat sheet, but I still spent an inordinate amount of time stopping and rewinding the videos trying to catch what key combinations he was using. On this site, we always tell people who are trying to learn Java and an IDE to lose the IDE and use a simple text editor. I strongly feel the Coursera courses should follow the same advice and stop using things like Emacs and DrRacket. In the forums, it becomes apparent that the tools are often the source of as much frustration as the assignments.
Sean Corfield wrote:
The countChange function took me a while - Pascal's Triangle was pretty straightforward by comparison. I was a bit surprised at how little Scala the lectures have covered so far. That first assignment was a bit abrupt! It was "Here's some theory... now go write some Scala!". I'll be interested to see how it progresses, esp. since one of my colleagues is having a go at the course and he's not used to strongly typed languages, nor Java, so it'll be pretty unfamiliar to him.

I was also surprised by the quick jump into the first assignments. But my problem with the Pascal program is the formula. My search for help led me to this page and I don't understand that first formula. So I followed the link on "recurrence relations" to this page but I might as well try to read Egyptian hieroglyphics. So I'm stuck because I don't know how to translate that formula into code.
Sean Corfield wrote:The SPD course is aimed at complete beginners and FP doesn't require a mathematics background, nor computer science. I suspect you're just very used to the OOP way of thinking and unlearning that can be pretty tough when you first encounter FP. What languages have you worked with so far in your career? If the answer is "primarily Java" then you'll have a lot of baggage and "bad thinking" to let go of, in order to pick up the (much simpler) approach of immutable data and pure functions. It really is much simpler but it will seem extremely alien at first...

I don't think I can agree with you on the math background based on my experience above with the triangle. Maybe if I can get someone to explain that formula to me.... My background started with GWBasic (yes, I'm that old), Visual Basic, Turbo Pascal (loved that one), Paradox (anybody remember that?), WinBatch and Crystal Reports. About 6 years ago I learned Java and had a very difficult time grasping the OOP mindset. But with lots of determination and repetition I finally "got it". Now I'm struggling with the functional mindset. Incidently, I've found Bears' "Ninja" book to be very helpful in understanding some of the functional concepts. Not so much recursion, but the idea of functions as first class objects. (Thanks, Bear.) But, yes, it's a very different and difficult way of thinking. That why I'm determined to learn it; I know that it will give me an entirely new perspective on analyzing programming problems, but damn, it's turning out to be a long, difficult road. I started with "Learn you a Haskell" almost a year ago and I'm still trying to "get it".
Sean Corfield wrote:
Feel free to ping me for help on the assignments and FP in general, if you think that'll help. If you use IRC, there's a #courseraprogfun channel on freenode for the Scala course and I'm usually in there. Or reach out to me via PM here...

Thanks for the offer. I'll likely be taking you up on that if I survive the first week.

[update] I'm currently reading "Structure and Interpretation of Computer Programs". It was on the list of recommended reading, and I see that chapter one covers the square root iterator that we covered and there is also something on Pascals Triangle (almost to that section). I hope this book will explain things a bit clearer.
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1606
    
  13

@Kevin:
Don't worry about using Emacs for the Programming Languages course. I decided early on that I could either learn about Programming Languages/FP/Standard ML/Racket/Ruby, or I could learn Emacs. So I ditched Emacs and used another editor with REPL support (Sublime Text 2) to learn all kinds of fascinating stuff on an outstanding course. If you have time, I really recommend you try this course again - perhaps at the next presentation after you've got the Scala course under your belt. And DrRacket is really easy to pick up - much easier than most IDEs.

As for the Scala course, I'd say stick at it. I found it quite hard going, and when the course statistics were published I discovered I was definitely in the slow learners cohort who took longer than the expected number of hours to complete each week's work. But it didn't matter because I learned a lot, had a lot of fun (in retrospect ) and got a good grade in the end. Use the course forums, where there are a lot of clever people who can help you out, and look through the framework code that is provided for each exercise to get a clearer understanding of how Scala works and what you need to implement. And check out Odersky's book and the online version of SICP (both included in the recommended background reading), as there are some very relevant chapters and exercises in there.

As for FP, I don't have a maths/CS background either (my degree was in German Language and Literature!), and I'm still struggling to find opportunities to apply FP in practice, but it is partly a matter of practice as with most things. And I suspect it's as much a question of unlearning imperative thinking as learning functional thinking. But you'll get a real buzz out of finding a nice elegant 3 line solution to a problem that might have taken 20 lines in Java.

Good luck!


No more Blub for me, thank you, Vicar.
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1606
    
  13

Matthew Brown wrote:
Sean Corfield wrote:Also coming back for a second run is U. Washington's "Programming Languages" course in which Prof. Dan Grossman teaches functional programming (and some OOP) via Standard ML, Racket, and Ruby. This starts on October 3rd. See https://www.coursera.org/course/proglang for more details. I think I've been selected as a Community TA on this one too.


I was tempted to apply to be a Community TA on that one as well, but decided I'm too busy overdosing on taking MOOCs at the moment to get involved like that.

Me too - but I'm already taking two MOOCs over the next couple of months, starting a new project and following a stats course at work, and going on a Java EE training course next month (which will really mess up my nascent FP skills. ), plus I think my brain is perhaps less "functional" than yours or Sean's! So I politely declined the community TA role this time around, but it would certainly be fun to re-visit the course as a TA next time perhaps.

Good luck with the MOOCs, chaps!
J. Kevin Robbins
Bartender

Joined: Dec 16, 2010
Posts: 823
    
  13

@Chris:
Thanks for the tip on Sublime Text; I'll check that out. I won't attempt Emacs again. I would like the try the course again at some point. I didn't drop it, so all the material is still available to me when I find the time to revisit it.

I'll stick with the Scala course as long as possible. I finally figured out the Pascal problem yesterday. After spending about an hour staring at that formula for binomial coefficients, I finally figured out what it was trying to tell me. Now I'm struggling with the parenthesis problem. <sigh>

I really do like the elegance of FP. There is something almost artistic about the simplicity of it. One of these days the light bulb will come on if I just keep trying.
Jeanne Boyarsky
internet detective
Marshal

Joined: May 26, 2003
Posts: 30057
    
149

I signed up for the programming languages course. I use vi a lot. I never learned emacs so no time like the present.


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1606
    
  13

Jeanne Boyarsky wrote:I signed up for the programming languages course. I use vi a lot. I never learned emacs so no time like the present.

Good luck - hope you enjoy the course as much as I did. Watch out for a guy with a PhD jumping up and down to explain contra-variance...
 
wood burning stoves
 
subject: Coursera course overload!
 
Similar Threads
New Coursera course on Reactive Programming with Martin Odersky
need advice on learning functional programming
Free online course in Scala from Martin Odersky
Easy way to learn computer languages
Getting started with Functional Programming...