Spring 2021 catalog is now live!
To determine if a course is remote, hybrid, or in-person use the catalog search tool to narrow results. Otherwise, when browsing courses, the section indicates teaching mode:
R = Remote
H = Hybrid
0 = In-person
Teaching modes (remote, hybrid, in-person) are subject to change at any point. Please pay close attention when registering. Depending on the timing of a teaching mode change, faculty also may be in contact with students.
This course examines the concepts and structures governing the design and implementation of programming languages. It presents an introduction to the concepts behind compilers and run-time representations of programming languages; features of programming languages supporting abstraction and polymorphism; and the procedural, functional, object-oriented, and concurrent programming paradigms. Programs will be required in languages illustrating each of these paradigms.
Format: lecture/conference; There is no scheduled time for lectures. They will be available online for asynchronous viewing. Each conference section will meet once per week. Students should sign up for lecture and one conference.
Grading: yes pass/fail option,
no fifth course option
weekly problem sets and programming assignments, a midterm examination, and a final examination
current or expected Computer Science majors
This course include regular and substantial problem sets and labs in which quantitative/formal reasoning skills are practiced and evaluated.