A survey of significant concepts underlying modern programming languages, including syntax, functions, expressions, types, polymorphism, assignment, procedures, pointers, encapsulation, classes, and inheritance, with some discussion of implementation issues. Prominent programming paradigms, such as sequential, concurrent, object-oriented, functional, and logic programming. Illustrative examples drawn from a variety of current languages.

Computer Science 345 and 345H may not both be counted.

Prerequisite: Computer Science 429 (or 310) or 429H (or 310H) with a grade of at least C-, and consent of the honors director.

Restricted to honors students.

Undergraduate Program