This course is an undergraduate introduction to programming languages. Its catalog description states:
Introduction to the fundamental concepts of formal languages, as well as the evolution and characteristics of major programming languages. Topics include finite-state automata, regular expressions, parsing, syntax and semantics, scope and binding, data types, and abstract data types.
We study programming languages drawn from four paradigms: imperative, object-oriented, functional, and logic. Specific languages include (not exclusively) an assembly language (Python bytecode), C, C++, Python, Java, Standard ML, and Prolog. We will compare features and styles and learn a bit about implementation aspects. We adopt an active learning approach that emphasizes exploration.
Prerequisites: COS 226 (data structures); COS 250 (discrete structures) with a grade of C or higher; programming maturity.