“This course covers the design and implementation of programming languages. Topics include data structures for representing programming languages, implementing control structures (such as functions, recursion, and exceptions), garbage collection, and type systems. Students will be expected to implement several small languages using a functional programming language. Undergraduate credit may not be earned for both this course and CS 536.”
CS 4536 focused on properties of programming languages and how to design your own. There was a basic mathematical language that was developed and expanded throughout this course. Projects involved writing different aspects of the language, such as the interpreter, desugrarer, and type-checker.