CSI 4125 Theory of Programming Languages
Dr. Amy Felty
- Required Textbook and Class Notes
- Essentials of Programming Languages, Daniel
P. Friedman, Mitchell Wand, and Christopher T. Haynes, MIT Press,
2nd edition, 2001.
- Photocopies of supplementary class notes will be available.
Excerpts from the textbook's Foreword and Preface help set the
goals for the course
- "This book brings you face-to-face with the most fundamental
idea in computer programming:
The interpreter for a computer language is just another program.
It sounds obvious, doesn't it? But the implications are
profound. [...] If you are a programmer, mastering the idea of an
interpreter is a source of great power. It provokes a real shift
in mindset, a basic change in the way you think about programming."
- "The goal of this book is an analytic study of programming
languages. Our goal is to provide a deep, working understanding of
the essential concepts of programming languages."
- Most of these essentials relate to the semantics, or meaning, of
program elements. Such meanings reflect how program elements are
interpreted as the program executes. Programs called interpreters
provide the most direct, executable expression of program
semantics. [...] We therefore choose interpreters as our primary
vehicle for expressing the semantics of programming language
- Assignments, 30%
- Midterm Exam, 20%
- Final Exam, 50%
- There will be approximately 5 assignments.
- The midterm exam will take place during class time.
- To pass the course, you must obtain at least 50% on the
- The language of implementation for the course will be Scheme.
- It is highly recommended that you use DrScheme. You may
either download it, or use
the version that is available under Microsoft Windows in the SITE
lab. To run the book's code you need to set the language to
"Essentials of Programming Languages (2nd ed.)".
- If you want to use another Scheme, you will need the
appropriate Scheme language extensions to run the book's code.
See the textbook web
site for information.
- The DrScheme web site has a useful
- There is also a freely available
- Approximate Course Outline (with readings from textbook and
- Review of Grammars, Recursive Programs, and Scheme, Textbook Sections
- Scoping and Binding of Variables, Textbook Section 1.3
- Data Abstraction, Textbook Sections 2.1, 2.2
- Data Type Representation, Textbook Section 2.3
- Data Type Example: Data Queues, Textbook Section 2.4
- A Simple Interpreter, Textbook Section 3.1
- The Front End, Textbook Section 3.2
- Conditional Evaluation, Textbook Section 3.3
- Local Binding, Textbook Section 3.4
- Procedures, Textbook Section 3.5
- Recursion, Textbook Section 3.6
- Variable Assignment, Textbook Section 3.7
- Statements, Textbook Section 3.9
- Parameter-Passing Variations, Textbook Section 3.8
- Operational and Denotational Semantics, Class Notes Chapters
2 and 5
- Object-Oriented Programming: Classes and Inheritance, Textbook
Sections 5.1, 5.2
- Object-Oriented Programming: Implementation, Textbook Sections
- Continuation-Passing Interpreters, Textbook Sections 7.1-7.2
- Exceptions and Control Flow, Textbook Section 7.4
- A Continuation-Passing Interpreter for Logic Programming,
Textbook Section 7.6
- Nondeterminism and Parallelism, Class Notes Chapter 14
- Axiomatic Semantics, Class Notes Sections 13.4-13.5