Excellent course and teacher. I love that all of it was 100% accessible for free, and that it was both fun and challenging, yet very doable for most people who do their work and had prior experience.
This course (and its subsequent parts) has long been on my MOOC bucket list. However, I have dropped out of previous sessions quite a few times when things got hectic with work and general life chaos.
I had excused myself with (false) statements such as "this course is too theoretical to be immediately useful" and "what's the point of spending time scratching the surface of a not-so-popular language". Looking back, I couldn't believe how wrong i was at the time, and couldn't be more glad that I finally started to pull through this series.
Sure this series is more theoretical and has little of the "cool" projects, but even this first course of the series has already shed new lights on my perspectives on programming languages, familiar or new. I used to see programming languages each in a class of their own (or only with similarities on the syntax-level), but this course has so far taught me, that there are governing principles true to all programming languages, and general rules that apply to types/families of languages.
Granted that I was writing ML the whole time for this course, but throughout the assignments and lectures, I couldn't help (though really not supposed to) but kept on seeing connections to languages that I'm familiar with (Options -> Java Optional, Signature -> header files, map/filter/reduce across the board). It was quite some exciting moments of (re)discovery, finding out about ideas that translate from one language to another.
I highly recommend this course to anyone who aspire to become better programmers. Thank you very much Dan, for sharing this course and your passion for programming languages with people around the world! I can't wait to find out what part B and C have to offer!
