This course covers issues underlying the design of high-level programming languages, along with elements of the compiler technology used to translate those languages into executable code. Topics covered include formal description of language syntax, parsing, memory management, attributes of variables and their binding times, control and data-abstraction mechanisms and object-oriented language features. The focus is on imperative and object-oriented languages, with brief introduction to functional and logic-programming paradigms. Substantial programming projects are required.
Prerequisites: CS 2134 (C- or better) and MA 2312.