Wednesday I start teaching a course for BYU called Concepts of Programming Languages. This is a course I designed 10 years ago when I first went to BYU and its still taught in much the same manner. The text, which is an excellent introduction to how programming languages work, is Essentials of Programming Languages. In many curriculums, this course is a survey course that simply becomes a "programming language of the week" sort fo thing. I try to avoid that. The primary concepts that the course tries to teach are:
- The interpreter architecture pattern
- How static structures (i.e. programs) give rise to dynamic behavior
The class uses Scheme (a dialect of Lisp) and the students build a series of interpreters for a variety of language features, including one that interprets and object-oriented language, and one that does type checking. The class calendar is online (updated automatically from my iCal, of course). There are copius class notes. In my class last semester I had quite a few students who had Macs, so I'm going to encourage collaborative note taking using Hydra. I am thinking of establishing a class Wiki as well to see what happens. I'll be blogging the course, but not to my homepage. I've set up a separate category on my blog, so if you're interested in following along, you'll have to visit that page or subscribe to that RSS feed separately.