Oleg's tagless-final lectures as advanced topic

I believe Oleg Kiselyov's lecture notes on typed tagless-final interpreters could be an interesting advanced topic.

The technique provides an elegant solution to the expression problem and serves as a basis for a very pleasant way to implement EDSLs in Haskell and OCaml in a way that's not quite available outside of functional programming.  Moreover, programming in the coalgebraic style is a great excercise that helps construct a solid understanding of even simpler concepts such as expressing computations over lists as applications of `foldr`.

I've had success teaching the first-order, unityped part of those lectures to students with only 5 or so weeks of experience with functional programming, so it should be feasible as a topic for the course.