Investigate the basic concepts behind programming languages, with a strong emphasis on the techniques and benefits of functional programming. Use the programming languages Meta-Language Racket, and Ruby in ways that will teach you how the pieces of a language fit together to create more than the sum of the parts. Gain new software skills and the concepts needed to learn new languages on your own.
This course is great. I've written this comment to get it's ratings up, it's unfair that it has only 3.5. If you have at least 2 years of programming under your belt then this is the course for you. The assignments can be a bit hard but not impossible as long as you read them carefully, a habit that I don't have which caused me a lot of pain in this course. A great course prof. Grossman is great and in my opinion if you didn't liked this course then you don't have enough programming experience to take it.
It is interesting how Dan Grossman starts the class by telling you that all assignments are described precisely and with minimum words. Actually the assignments are easy (for experienced programmers) once you get around the terrible instructions. I asked a friend whose job it is to 'translate' government speak to plain english and he thought a lot of the descriptions were terrible. There were similar complaints on the forums. Maybe Dan Grossman needs to consider and take on some of the comments rather than just arrogantly dismissing them outright. I would not recommend this course at all.
I really enjoyed this class. It was difficult and a lot of work, but it really helped me understand the differences between programming languages and some of the trade-offs between them. It is not an introduction to programming course, you do need to understand basic programming, especially recursion. The languages taught are SML, Racket, and Ruby. In summary, a great course taught by a great professor. Definitely recommend this course and any other course Prof Grossman would teach in the future.