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-.