1 unit(s) Introduces a systematic approach to understanding the behavior of programming languages. Topics include interpreters; static and dynamic scope; environments; binding and assignment; functions and recursion; continuation passing; parameter-passing and method dispatch; objects, classes, inheritance, and polymorphism; type rules and type checking. The Department.