CS322 PRINCIPLES OF PROGRAMMING LANGUAGES (4 Cr.)
Prerequisites: MA240, CS222, CS330 (concurrent enrollment in CS330 permitted) or permission of instructor.
This course will survey the concepts and characteristics that are currently employed in modern programming languages. These include assignment effects, procedure activations, scope rules, type systems for conventional imperative programming languages, and data encapsulation and inheritance in the object-oriented paradigm. This course will also cover concurrent and non-imperative languages (i.e., functional and logic). The implementation of high-level languages will be examined, including the major components of modern compilers (e.g., lexical analyzers, parsers, and machine code generation), compiler theory (e.g., push-down automata and formal grammars), and translator-based language design issues (e.g., compilers versus interpreters, single-pass versus multi-pass compilers).