Coursera course "Programming Languages" by Dan Grossman