20905 Programming Languages

Credits: 4 advanced credits in Computer Science or in Software Engineering

Prerequisites: Students must fulfill all English requirements and take bibliographic instruction in the Library.

Required: Data Structures and Introduction to Algorithms and Object-Oriented Programming (or Software Engineering: Abstraction and Object-Oriented Design)

Recommended: Automata Theory and Formal Languages, Compilation

The course, developed by David H. Lorenz, is based on Essentials of Programming Languages (3rd ed.), by D. Friedman, and M. Wand (The MIT Press, 2008).

The course studies the basic components of programming languages; specification of syntax and semantics; and description and implementation of programming language features.

Topics: Interpreters; static and dynamic scope; environments; binding and assignment; functions and recursion; parameter-passing and method dispatch; objects, classes, inheritance, and polymorphism; type rules and type checking.