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.