Today I was external examinator for a programming language course at the University of Aalborg. Most of the designs are pretty unimaginative - think reskins of tiny subsets of Java. However, one group had managed, almost by accident, to construct a dynamically typed language with records (they called them "objects"), static scoping, and first class functions. That is, a pretty comfortable Lisp! (Although without s-expressions.) I don't think they quite understood what they had done. When I showed them how to define a fully capable OOP system in their language (using closures), some of them suggesting that perhaps their language should be restricted so that this would not be possible. Strong Allegory of the Cave vibes.