• Term: Summer (II) 2022
  • Time: Monday, Wednesday, Thursday, 10:30am – 12:50pm
  • Place: Pulichino Tong Bldg - 120 (North Campus)
  • Instructor: Paul Downen <>
  • Office: Dandeneau Hall, Room 305
  • Office Hours: Monday, Wednesday, Thursday, 1:00pm – 1:45pm, or by appointment

Class Description

Analytical approach to the study of programming languages. Description of the salient features of the imperative, functional, logical, and object-oriented programming paradigms in a suitable metalanguage such as Scheme. Topics include iteration, recursion, higher-order functions, types, inheritance, unification, message passing, orders of evaluation, and scope rules. Elementary syntactic and semantic descriptions. Implementation of simple interpreters.

Class Objectives

At the end of this course, students should understand

  • • how programming languages are defined and specified, including both their syntax and semantics,
  • • key ideas from several programming paradigms (with emphasis on object-oriented and functional paradigms), their strengths, and their weaknesses,
  • • core concepts, such as variable scope and recursion, that are common among all languages and paradigms,
  • • how to create simple interpreters for minimalistic programm


Prerequisite: COMP 2010 - Computing III