• Post Reply Bookmark Topic Watch Topic
  • New Topic

Programming Languages course on Cousera  RSS feed

 
Will Myers
Ranch Hand
Posts: 417
Java jQuery Scala
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have been waiting a long time for this to run again, finally it's scheduled for 2nd October, anyone done it before? Any preparation tips?

Programming Languages
 
Piet Souris
Rancher
Posts: 1943
66
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi Will,

no I haven't done this course, but I did the Scala course in May/June.
I did that for two reasons: personal interest, and a special interest (having
to do with the obligation of obtaining enough so called "Permanent Education"
points to stay in my business), and therefore I decided I had to get
that certificate, no matter what.

And that involved in at least 10 hours per week, if not more.
So, if you intend to go for it, make sure you really can afford the time.
No holidays, no wife, children and lots of other family obligations

Slightly exxaggerating of course, but if you can spare the time,
then you're in for a very interesting course. Success!

Greetz,
Piet
 
Piet Souris
Rancher
Posts: 1943
66
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
By the way,

I just got a mail from Coursera where they announced a course
starting begin September.

It is about Finite State Automata, Regular Expressions and
all things Grammar (context free, context sensitive, free),
what that has to do with compilers, and no doubt ending in
Turings variant of the famous Gödel Theorem. And finishing
with the NP problem.

Highly interesting stuff!

Greetz,
Piet
 
chris webster
Bartender
Posts: 2407
33
Linux Oracle Postgres Database Python Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The Programming Languages course is great (even better than the Scala course IMO). I took it last year and learned a heck of a lot. Preparation depends on your background, but provided you have reasonable experience of coding in different languages, the course materials cover everything you need to learn. You might like to look at SICP for background, or work through any tutorials you can find on functional programming - in any FP language as the core principles are the same whether it's Haskell, Scala, Clojure or F#. This course will give you a great introduction to those core principles of FP and how they relate/contrast with other approaches such as OOP.

There was some encouragement (but no pressure) to use Emacs as your editor, but I think a lot of us decided that was too much to learn on top of the rest of the course topics, and you can manage fine with other editors. Being able to link a REPL to your editor is helpful, so you could take some time to get comfortable with a suitable editor such as Sublime Text. Use the forums to ask for help, as the course team were very helpful, as were the other students.

Make sure allow plenty of time for the course work. The official estimate is up to 12 hours per week, and I certainly went over that some weeks. But it was such a good course that I didn't mind the work, and the course tutor (Dan Grossman) is an outstanding teacher, so hopefully you'll have a lot of fun as you expand your mind.

Enjoy!
 
Matthew Brown
Bartender
Posts: 4568
9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I've done 20+ Coursera courses so far (plus a few edX and FutureLearn: yes, I'm addicted), and I think Programming Languages is the best one I've done yet. Really well put together.

I had experience of functional programming (with Scala) before I started, and that's definitely useful, but I had zero experience with any of the three languages used: SML, Racket and Ruby (in fact, that was one thing that attracted me). So don't worry if you've never come across those before; the course includes enough material to start them from scratch.

 
Sean Corfield
Ranch Hand
Posts: 314
14
Clojure Linux Mac OS X Monad
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I've taken this course twice: first time as a student, second time as a community TA. As others have noted here: this course is a big time commitment! I had a lot of Functional Programming experience but the Standard ML and Racket sections still took me quite a bit more time than I expected (I had foolishly expected to just breeze through the material since I've been doing FP on and off since the 80's and my PhD was in that area too!). The Ruby section was also a lot more work than I expected (and cemented my dislike of Ruby). Despite all the work, it is an awesome course! Highly recommended - you'll learn a huge amount, regardless of background, and you'll be challenged along the way. Prof Grossman is an amazing teacher. The material is interesting and fun.

If you take the work seriously, it will definitely make you a better programming, no matter what your "home" language is.
 
Will Myers
Ranch Hand
Posts: 417
Java jQuery Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I also took the Scala and the Reactive Programming courses last year and I reckon I spent close to double the amount of time stated on each coursework, sometimes more so I'm taking the time commitment estimate with a huge pinch of salt!
 
chris webster
Bartender
Posts: 2407
33
Linux Oracle Postgres Database Python Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Will Myers wrote:I also took the Scala and the Reactive Programming courses last year and I reckon I spent close to double the amount of time stated on each coursework, sometimes more so I'm taking the time commitment estimate with a huge pinch of salt!

Sounds like you're already quite well-prepared for this course then!
 
Sean Corfield
Ranch Hand
Posts: 314
14
Clojure Linux Mac OS X Monad
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I started the Scala course and quickly dropped out. I found it pretty boring. The examples were very academic and math-heavy (I'm a mathematician by training but still found it boring). I also found Scala very tedious to work with.

It's funny because I did production work with Scala for a year or two (back in the 2.7 / 2.8 days) before I switched to Clojure, so I thought I'd just drop back into Scala and be able to focus on the FP aspects of the course... but Scala just felt fussy and annoying (and the math didn't help) so I just couldn't stick at it. Everyone raves about Odersky's courses but I was very disappointed. I may have another run at them when I have a lot more free time and don't begrudge spending so many hours each week doing such tedious exercises...
 
Will Myers
Ranch Hand
Posts: 417
Java jQuery Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I really enjoyed the Scala course, it really stretched my tiny brain and I felt I learnt a lot. The Reactive one seemed a lot less polished and I really struggled with the assignments so I don't think I learnt as much. I intend to do it again at some point and maybe I'll remember some of it :-)
 
Jesper de Jong
Java Cowboy
Sheriff
Posts: 16007
87
Android IntelliJ IDE Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Will, that looks interesting. I've signed up for the Programming Languages course.

I've done a few Coursera courses until now: the Programming in Scala course when it was given for the first time (I think that was in 2012), the Reactive Programming course and I'm now doing the third of a series of three courses on Android programming.
 
Tim Cooke
Marshal
Posts: 3840
221
Clojure IntelliJ IDE Java
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm going to be doing the Programming Languages course and am planning also to run a workshop at my workplace for anyone else who wants to do it with me. I might even make it a feature for October in the Bunkhouse Lounge. I attempted it when it was run last year but got bogged down with real life stuff and had to bail. I really enjoyed what I did get done of it though so am looking forward to it this year.

A peer of mine was talking with Roland Kuhn earlier in the year and it appears that they got some mixed feedback for the Reactive Principles course and I understand that they are planning to make some improvements to the course before they run it again. I think there's a few guys from TypeSafe working with Martin Odersky on it so it'd be worth looking out for it coming round again.
 
Will Myers
Ranch Hand
Posts: 417
Java jQuery Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
A peer of mine was talking with Roland Kuhn earlier in the year and it appears that they got some mixed feedback for the Reactive Principles course and I understand that they are planning to make some improvements to the course before they run it again. I think there's a few guys from TypeSafe working with Martin Odersky on it so it'd be worth looking out for it coming round again.


I found it be not very joined up. The first week was a catch up of Scala that struck me as some filler and I struggled to see how the parts by Roland and Eric fitted together. The Scala one flowed much better and built on the previous weeks subject but the Reactive one didn't really seem to do that.
 
chris webster
Bartender
Posts: 2407
33
Linux Oracle Postgres Database Python Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I enjoyed the Scala course, but it did feel very academic and I found some of the earlier exercises were too abstract for my literal brain. It improved later on, though, and I learned a lot.

I started the Reactive course, but only lasted two weeks as it seemed to combine all the worst aspects of the Scala course (very academic, unnecessarily abstract, endless type algebra) with none of the benefits. Maybe I'm not smart enough for Reactive Programming.

I think Programming Languages is a better course than either of these, better structured, better taught, more varied, more engaging and more fun, but just as rewarding in terms of the material covered. Like a lot of people who took the course, I feel it made me a better programmer. Good luck to all of you who are taking it this year.

As for Scala, I can understand why Sean might find it stodgy coming back to it from a Clojure background, but if you're wading out of the swamp of Java EE, Scala seems quite refreshing by comparison!
 
Sean Corfield
Ranch Hand
Posts: 314
14
Clojure Linux Mac OS X Monad
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
chris webster wrote:I enjoyed the Scala course, but it did feel very academic and I found some of the earlier exercises were too abstract for my literal brain. It improved later on, though, and I learned a lot.

Good to know it improves - and also that I'm not the only one to find it rather academic and dry/abstract!
chris webster wrote:I started the Reactive course, but only lasted two weeks as it seemed to combine all the worst aspects of the Scala course (very academic, unnecessarily abstract, endless type algebra) with none of the benefits. Maybe I'm not smart enough for Reactive Programming.

I don't think Reactive Programming is difficult or clever - if it is explained well. Elm is a good example of a language that implements a very pure approach to Functional Reactive Programming but works extremely hard to avoid academic language and computer science jargon (e.g., the M-word - monad - is deliberately not mentioned in Elm, despite several constructs and idioms being monadic in nature).
chris webster wrote:As for Scala, I can understand why Sean might find it stodgy coming back to it from a Clojure background, but if you're wading out of the swamp of Java EE, Scala seems quite refreshing by comparison!

True. My journey was mostly C -> C++ -> Java -> Groovy -> Scala -> Clojure (with a long sideline in CFML) so Groovy was the refreshing change after Java and Scala brought conciseness and expressivity but a very fussy syntax and type system by comparison. I would never take a job that required me to program in Java (unless it was green field and used Java 8) but I would be happy with Scala as my day job (or Groovy), even tho' my preference is definitely Clojure!
 
Jesper de Jong
Java Cowboy
Sheriff
Posts: 16007
87
Android IntelliJ IDE Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Is anybody else here doing the Programming Languages course that has now started?

We're now in the second week, I've just finished the homework. We have been programming in Standard ML. I haven't yet learned much that I didn't know, besides the syntax of Standard ML. I already knew all the concepts that have been taught until now, mainly because I know Scala.
 
chris webster
Bartender
Posts: 2407
33
Linux Oracle Postgres Database Python Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Don't worry, Jesper, there'll be plenty of other stuff to learn over the next few weeks, especially when you switch to Racket! Good luck - hope you enjoy the coursr as much as I did.
 
Sean Corfield
Ranch Hand
Posts: 314
14
Clojure Linux Mac OS X Monad
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Jesper de Jong wrote:Is anybody else here doing the Programming Languages course that has now started?

Yup, I'm a Community TA for the second time, so this is my third time overall doing the course.
Jesper de Jong wrote:We're now in the second week, I've just finished the homework. We have been programming in Standard ML. I haven't yet learned much that I didn't know, besides the syntax of Standard ML. I already knew all the concepts that have been taught until now, mainly because I know Scala.

Understandable. I'll be interested to hear how you find the Racket and Ruby portions of the course - and whether, ultimately, even the SML part teaches you some new stuff.
 
chris webster
Bartender
Posts: 2407
33
Linux Oracle Postgres Database Python Scala
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In case anybody needs encouragement to take (and finish) this course, I highly recommend Russ Olsen's entertaining talk on Programming In Interesting Times which begins with the stark reminder that "Your Programming Language Is Going To Die"! He basically encourages people to look at the up-and-coming languages, and choose languages from different "families" rather than ones that are similar to what you know e.g. pick Clojure rather than C# if you're a Java programmer.

I reckon Russ will give you all the motivation you need to get you through this excellent course!
 
Sean Corfield
Ranch Hand
Posts: 314
14
Clojure Linux Mac OS X Monad
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Just watched that. Awesome. Russ is a great speaker - he gave the closing keynote at Clojure/conj 2013 which was also inspiring https://www.youtube.com/watch?v=4Sso4HtvJsw

I've also told people to learn other languages and, in particular, to learn languages that are different from what they already know, so I'm totally onboard with Russ's message
 
Jesper de Jong
Java Cowboy
Sheriff
Posts: 16007
87
Android IntelliJ IDE Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Jesper de Jong wrote:We're now in the second week, I've just finished the homework. We have been programming in Standard ML. I haven't yet learned much that I didn't know, besides the syntax of Standard ML. I already knew all the concepts that have been taught until now, mainly because I know Scala.

We're now nearing the end of the Programming Languages course and the last weeks have indeed been much more interesting than it was in the beginning. I especially liked last week's lectures where functional and OO programming were compared with each other, showing for example that in an FP-style program it's easy to extend it with new operations, while in an OO-style program it's easy to extend it with new data types.

I finally have a way to remember now why functions are contravariant in their argument types and covariant in their return types; for me, the way to remember it is to think that it's about subtyping of function types. (Not a jumping professor! ) For example if I have a function that takes a String as an argument, then a subtype of that function could take an Object (supertype of String) and still be callable through the super-function's type (that requires a String).
 
Jesper de Jong
Java Cowboy
Sheriff
Posts: 16007
87
Android IntelliJ IDE Java Scala Spring
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I just did the final exam of the Programming Languages course, scored 94 / 100.

As I already wrote the later parts of the course were much more interesting to me than the beginning.

I'd recommend this course to any programmer who wants to learn more about the fundamental concepts underlying the programming languages that we use, and to learn to see beyond the horizon of your favourite programming language.
 
chris webster
Bartender
Posts: 2407
33
Linux Oracle Postgres Database Python Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Nice going, Jesper - glad you found the course rewarding too.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!