I just completed the course Programming Languages at coursera and here’s my two cents. It is offered by Professor Dan Grossman of University of Washington. The course is incredibly informative and invaluable.
The course investigates the basic concepts behind programming languages, with a strong emphasis on the techniques and benefits of functional programming. The course curriculum is vast, covering functional programming vs OOP, static vs dynamic typing, pattern matching, type inference, first class functions and function closures, thunks, streams and memoization, tail recursion, parametric polymorphism, object oriented inheritance and method overriding, multiple inheritance and mixins, subtyping and its pitfalls, and lots more.
The course compares and contrasts functional vs OOP style, static vs dynamic typing by comparing the differences and similarities between SML (Standard ML of New Jersey), Racket and Ruby. It also provides case studies for Java and C++. It is interesting to see the same concepts implemented in a different setting by comparing different languages. This is another advantage of this course. We get to learn three new (well at least for me!) languages: SML, Racket and Ruby and get ample coding experience in them.
It is a 10 weeks course, with 8 sections. Each section has an associated programming assignment, which reciprocates the lecture content, tests understanding of the material and requires some creativity and ingenuity on the student’s part. The programming assignments are auto-graded for accuracy as well as peer-reviewed for style. The peer-reviewing provides constructive feedback for improvement. Then, there are mid-term and final exams and practice versions of them. It feels like a true University course, not some watered-down version.
This is not an introductory course and expects students to be familiar with simple data structures, recursion, have sufficient coding experience in some language and be eager to learn new languages. I think it is one of the most difficult courses available at coursera. The programming assignments are at times frustrating to wrap your head around them but the video lectures are simply amazing. You wouldn’t believe after the course that there was so much to learn about programming languages.
All in all, It is a great course. I would highly recommend this course to all CS enthusiasts.