- 2 reviews
- 1 completed
Dan Grossman is a great teacher and this is a great course. If you are focused on learning "how to program" in some commercially popular language or other, this course is probably not for you. The course is about how languages work, not how to do use computer languages to do things. In the course, Dr. Grossman introduces us to programming in three different languages - Standard ML, Racket and Ruby. Of the three, the only one of any appreciable commercial interest is Ruby. The work is challenging. If you are a programmer, this course will make you a better one. If you are not a programmer, this course will give you very deep insight into the art. In either case, however, don't expect to be able to apply what you learn in this course directly to your practice. The course could be taken before Martin Odersky's Functional Programming in Scala course. Both courses heavily emphasize functional programming, which was an unfamiliar programming paradigm to me. It didn't come easily - I had to struggle with it. If you have not been exposed to functional programming before, be prepared to work hard and to learn a lot.
This is a brilliant course. Scala is a very terse language that borrows from a number of other languages and runs on the JVM. Scala is written to support programming in both imperative and functional style. The course emphasizes Sacla's functional programming features. Functional programming differs from other styles of programming in that programs don't maintain "state" - the use of traditional programming constructs like variables, iteration and mutable data are discouraged. Instead, all functions are "first class objects" and can be passed as parameters to other functions. Programs become recursive, stateless function calls. This takes some getting used to for an old Java guy like myself. It is fascinating and a little frustrating to look at the world in a new way. I can well imagine that functional-style programs might be better for many classes of problems than imperative-style approaches (OO in particular). But the real draw for me was just the excitement of looking at very familiar tasks in the light of very unfamiliar techniques. I was expecting to learn about Scala. It turns out that Scala is not so difficult. I really learned about FP. If Dan Grossman's Coursera course on Programming languages had been available, it would have been helpful to take that first, although both courses stand alone, and functional programming is a large enough subject that more than one course is not excessive. I loved the course and can't recommend it highly enough. You ought to be an experienced programmer or expect to have to work very hard to keep up.