Contents (hide)
 1 Welcome to Principles of Programming
Languages homepage

  1.1 Goal:
  1.2 Course plan:
  1.3 Textbooks
  1.4 Grading Policy
 2 Staff Info

Welcome to Principles of Programming Languages homepage

Goal:

Provide a wide understanding of the principles of programming languages, problem solving, program construction, and software design. The programming language is Scheme.

Course plan:

  1. Building Abstractions with Procedures. chapter 1:
    1. The elements of programming – 1.1 – class1.
    2. Procedures and the processes they generate – 1.2 – Part 1; Part 2 (text version)
    3. Formulating abstractions with higher-order procedures – 1.3 – class3.
  2. Building Abstractions with Data. chapter 2:
    1. Introduction to data abstraction – 2.1 – class4 class4.txt
    2. Hierarchical data and the closure property – 2.2 – class5 class5.txt
    3. Symbolic data and multiple representations for abstract data – 2.3 – exercise – class SymbolicData. 2.4 – class6 class6.txt
    4. Systems with generic operations – 2.5 – exercise. Class GenericOperators.
  3. Modularity, Objects, and State. chapter 3:
    1. Assignment and local state; the environment model of evaluation - 3.1-2 – class7 class7.txt, operational semantics.txt
    2. Object-Oriented programming – class8 class8.txt. A simulator for Digital Circuits – 3.3.4 – exercise. Propagation of constraints – 3.3.5 – exercise. Class CP.
    3. Modeling with mutable data – 3.3 exercise. Class MutableADT.
    4. Concurrency: Time is of the essence 3.4.
  4. Metalinguistic Abstraction. chapter 4:
    1. The metacircular evaluator - 4.1, extended with a Scheme grammatical Specification - class 10 class10 class10.txt. Includes:
      • The naïve Evaluator (4.1.1 – 4.1.6)
      • The Analyzer (4.1.7), that separates syntactic analysis from execution. Analyzer examples
  5. Introduction to Logic Programming:
  6. Continuation Passing Style (CPS):

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, including SCHEME CODE.
  • CPS (Continuation-Passing Style) is partially based on Chapters 7-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: 65% (or 75% without the bohan)
  • Mid-Term Quiz (Bohan): 10%, which is MAGEN–counts only if higher than exam.
  • Programming assignments: 25%
  • Important: you must pass the final exam to pass the course. If you fail the exam, exercises are not taken into account.
  • If exam grade is much lower than assignment grades, the weights will be different.

Staff Info

See Course Info page