Concepts of Programming Languages
Semester: Spring 2002

Course Information

  • Instructor: Hongwei Xi
  • Instructor's Office Hours: Wednesdays 5-6PM and Fridays 3-5PM at MCS 270, 111 Cummington Street
  • Teaching Assistant: Nenad Dedic
  • TA's Office Hours: Tuesdays and Thursdays 12:30-2PM at Room 221, 64 Cummington Street
  • Graders: Gerald Fry and Matthew Brookover
  • Lecture Times: MWF 2:00-3:00 PM
  • Classroom: CAS B36, 685 -725 Commonwealth Ave
  • Lab Sessions: MCS B31, 111 Cummington Street
  • Midterm: a one-hour in-class exam on March 1, 2002
  • Final: a two-hour in-class exam officially from 9AM to 11AM on May 10, 2002
  • Overview

    Concepts of Programming Languages is a course that introduces students to some fundamental concepts in programming language design and implementation. The primary goal is to allow students who complete this subject to have a good feel for the elements of style and aesthetics of programming and a good command of the major techniques for controlling complexity in a large system.

    The programming language Scheme, a dialect of Lisp that we use in this course, is an attempt to bring together the power and elegance of List and Algol. From Lisp we take the metalinguistic power that derives from the simple syntax, the uniform representation of programs as data objects, and the systematic management of heap-allocated data. From Algol we take lexical scoping and block structure.

    Ultimately, we would like to make a convincing argument that programming can be a great of deal fun.


  • Familiarity with programming in general.
  • Textbook

  • Structure and Interpretation of Computer Programs (second edition), by Harold Abelson and Gerald Jay Sussman with Julie Sussman. ISBN 0-07-000484-6. McGraw-Hill.
  • Programming Languages

  • MIT Scheme
  • Dr. Scheme
  • Links

  • Syllabus (ps)(pdf)
  • Introduction (ppt)
  • Schedules
  • How to use gsubmit to submit homework?
  • Archived Messages
  • Scheme Code for Simulating Circuits
  • Notes

  • Inductive Reasoning (ps)(pdf)
  • Reference Books

  • The Little Schemer (4th edition) by Daniel P. Friedman and Matthias Felleisen. ISBN 0-262-56099-2 (MIT Press)
  • The Seasoned Schemer by Daniel P. Friedman and Matthias Felleisen. ISBN 0-262-56100-X (MIT Press)
  • Essentials of Programming Languages by Daniel P. Friedman, Mitchell Wand and Christopher T. Haynes. ISBN 0-262-06145-7 (MIT Press) (hb) and IBSN 0-07-022443-9 (McGraw-Hill).
  • Mailing List

  • To join the course mailing list, type csmail -a cs320 at the Unix prompt
  • To inspect who else is on the mailing list, type csmail -p cs320
  • To remove yourself from the mailing list, type csmail -r cs320
  • Class Calendar

  • Class begins on Monday, January 14, 2002
  • Class ends on Wednesday, May 1, 2002
  • Midterm Exam is a one-hour in-class exam scheduled on Friday, March 1, 2002.
  • Final Exam is a two-hour exam officially scheduled on May 10, 2002, from 9 to 11AM.
  • Assignments

  • Assignment 1 (ps) (pdf) (Due on the 28th of January, 2002)
    (A session of playing Game-of-24)
    (A Table for Card Game-of-24), which you may find useful for testing your implementation.
  • Assignment 2 (ps) (pdf) (Due on the 4th of Feburary, 2002)
  • Assignment 3 (ps) (pdf) (Due on the 11th of Feburary, 2002)
  • Assignment 4 (ps) (pdf) (Due on the 19th of Feburary, 2002)
  • Assignment 5 (ps) (pdf) (Due on the 11th of March, 2002)
  • Assignment 6 (ps) (pdf) (Due on the 3rd of April, 2002)
    (Scheme code for a blackjack dealer)
    (The description of your task)
    (A description of the blackjack game)
    (The basic strategy for the blackjack game)
  • Assignment 7 (ps) (pdf) (Due on the 17th of April, 2002)
  • Assignment 8 (ps) (pdf) (Due on the 1st of May , 2002)
  • Solutions

  • Solution 1
  • Solution 2
  • Solution 3
  • Solution 4
  • Solution 5
  • Solution 6
  • Solution 7
  • Examinations

  • Midterm (ps) (pdf)
  • Solution to Midterm (ps) (pdf)
  • Some Practice Problems (ps) (pdf)
  • Solution to Some Practice Problems (ps) (pdf)