A study of the principles that govern the design and
implementation of programming languages. Topics include language
structure, data types, and control structures. Programming
projects will familiarize students with features of programming
languages through their implementation in interpreters.
Students successfully completing this course should:
Understand the concepts of functional programming.
Be able to write programs in a functional style.
Understand the concepts of parsing and lexical analysis, write
lexical analyzers, and construct parsers using tools.
Understand the concepts of programming languages, including
expressions, statements, procedures, functions, parameter
passing, and control mechanisms, including continuations.
Be able to implement interpreters for various language
features in Racket.
Know the characteristics of the four language paradigms:
functional, imperative, object-oriented, and logic languages.
Homework (including programs)
You must have averages of at least 60% on exams and 60% on
homework (separately) in order to pass the course.
Homework will consist of written assignments and programming assignments.
Late homework will not be accepted without prior arrangement.
Attendance is required. More than three unexcused absences will
result in a failing grade for the course. Three tardies constitute one
The first occurrence of plagiarism will result in a 0 for the assignment
and a reduction of 1.0 in your final grade. A second occurrence will
result in failure in the course.
Any help that you receive on homework must be documented.