@quephird @jrose
The Programming Languages course I teach is built around this idea of tinkering with the unfamiliar as a way of learning underlying patterns, and learning how to learn — as opposed to preparing students specifically for graduate research in programming languages (“this semester, we will build a subset of OCaml in OCaml”) or offering a utilitarian checklist of specific language paradigms and language features. (Both of those can be good courses, but they’re not the one I teach!)
2/