Sometimes it's a real joy to give a lecture: the topic is right, and you have managed to get the slides to say what you want without clutter or confusion. This happened to me today, in giving my final lecture for a while in our “Functional and Concurrent Programming” course at Kent. I wanted to pull together all that we'd covered about functional programming, and do this by treating a “meaty” example. I chose language processing: here's the lecture recording and here are the slides.
Why choose language processing? It’s central to a CS course: even if our graduates are unlikely to write a compiler, there’s a much higher chance of writing something that will manipulate XML, or a domain-specific language, or build scripts, or test code … the list goes on. It's also a place where the combination of immutable data, expressive structured types, a highly developed lists library, and an interactive development loop work really well together.