Prof. Conrad Cunningham developed and taught Engr 691 Special Topics courses on this topic in the 2009 and 2011 Spring semesters. Those courses used the Scala language and focused on design and implementation of domain-specific languages (DSLs). Cunningham based some of the DSL ideas on a Fall 2006 offering of a Engr 692 Special Topics course on Ruby and Software Development.
Cunningham subsequently created CSci 658, Software Language Engineering, based on those prototypes. For the offering of CSci 658 in Fall 2013, Cunningham modified the course to use the Lua language and focus attention on design and implementation of traditional programming constructs and interpreters using Lua. He explored ideas for a planned revision of the undergraduate core course, CSci 450 Programming Language Organization.
UP to CSci 658 root document?