Welcome to Principles of Programming Languages homepage
Syllabus
- The elements of a programming language.
- Evaluating expressions.
- Procedures and the processes they define.
- Building abstractions using higher-order procedures:
- procedures as arguments;
- procedures as returned values.
- Abstract data types.
- Using lists to represent sequences and hierarchical structures.
- Multiple representations of data.
- Assignment and local state.
- The environment model of evaluation.
- Modeling with mutable data.
- Objects and object-oriented programming.
- The evaluator.
- Dynamic vs. static binding.
- Continuations and error handling.
- The compiler (analyzer).
- Streams and lazy evaluation.
- Non-deterministic computation (Prolog).
Textbooks
- Main textbook: Harold Abelson and Gerald Jay Sussman,
with Julie Sussman: Structure and Interpretation of Computer Programs, MIT Press, 2nd ed., 1996.
Home page of the book has entire text online.
- CPS (Continuation-Passing Style) is based on Chapter 8 of:
Daniel P. Friedman, Mitchell Wand, & Christopher T. Haynes, Essentials of Programming Languages,
2nd edition, MIT Press, 2001.
- Prolog is based on: Leon Sterling & Ehud Shapiro, The Art of Prolog, MIT Press, 1986
Grading Policy
- Final exam: 80%
- Programming assignments: 20%
- Important: you must pass the final exam to pass the course. If you fail the exam, exercises are not taken into account.