Principles of Programming Languages
Semester: Fall 2002

Course Information

  • Instructor: Hongwei Xi
  • Instructor's Office Hours: Mondays 11AM-12PM and Wednesdays 1PM-3PM at MCS 270, 111 Cummington Street
  • Grader: Chiyan Chen
  • Lecture Times: MWF 10:00-11:00 AM
  • Classroom: Room MCS B31, 111 Cummington Street
  • Midterm: a one-hour in-class exam on Monday, 21 Oct 2002
  • Final: a two-hour exam from 9AM to 11AM on Friday, 20 Dec 2002
  • Overview

    Principles of Programming Languages is a course that introduces students to some fundamental principles and techniques in modern programming language design and implementation. The course mainly covers functional and object-oriented programming and emphasizes the need for mathematical formalism in both describing and analyzing programming languages.


  • Familiarity with programming in general.
  • CS320 (Concepts of Programming Languages)
  • Textbook

  • Types and Programming Languages by Benjamin C. Pierce. ISBN 0-262-16209-1. MIT Press.
  • Programming Languages

  • Standard ML of New Jersey
  • Logistics

  • Syllabus (ps)(pdf)
  • Schedules
  • Guidelines for Homework Submission (ps)
  • How to use gsubmit to submit homework?
  • Archived Messages(new!)
  • Slides

  • Introduction (ppt) (ps)
  • Parsing Combinators (ppt) (ps)
  • Final Review (ppt) (ps)
  • Notes

  • Inductive Reasoning (ps)(pdf)
  • A Crash Course on SML (ps)(pdf) (incomplete!)
  • A session on using Standard ML.
  • Lecture Notes (ps) (pdf) (updated frequently)
  • Code

  • Some sample code for implementing a server in Objective Caml.
  • Some sample code for implementing a client in SML.
  • A parsing combinator package and an example on using parsing combinators.
  • Reference Books

  • ML for the Working Programmer by Daniel Larry C. Paulson. ISBN 0-521-57050-6 (hardback) and 0-521-56543-X (paperback). Cambridge University Press.
  • Elements of ML Programming by Jeffery D. Ullman. ISBN 0-13-790387-1. Prentice-Hall.
  • Introduction to Programming using SML by Michael R. Hansen and Hans Rischel. ISBN 0-201-39820-6. Addison-Wesley 1999.
  • Tutorials

    Mailing List

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

  • Class begins on Wednesday, 4 September, 2002
  • Class suspended on Monday, 14 October 2002
  • Substitute the previous day's class on Tuesday, 15 October 2002
  • Midterm Exam is a one-hour in-class exam scheduled on Friday, 25 Oct 2002.
  • Class suspended on Wednesday, 27 November 2002
  • Class suspended on Friday, 29 November 2002
  • Class ends on Wednesday, 11 December, 2002
  • Final Exam is a two-hour exam officially scheduled on Friday, 20 Dec 2002, from 9 to 11AM.
  • Assignments

  • Assignment 1 (ps) (pdf) (Due on the 23rd of September, 2002)
    (Here is a package implementing some operations on rational numbers)
  • Assignment 2 (ps) (pdf) (Due on the 30th of September, 2002)
  • Assignment 3 (ps) (pdf) (Due on the 15th of October, 2002)
    (signature for Exercise 3) (some test programs)
  • Assignment 4 (ps) (pdf) (Due on the 23rd of October, 2002)
    (Here is the parser provided for this exercise) (some test programs)
  • Assignment 5 (ps) (pdf) (Due on the 8th of November, 2002)
  • Assignment 6 (ps) (pdf) (Due on the 18th of November, 2002)
  • Assignment 7 (ps) (pdf) (Due on the 2nd of December, 2002)
    (Here is the parser provided for this exercise) (Some test programs: 1 2 3 4 5 6)
  • Assignment 8 (ps) (pdf) (Due on the 13th of December, 2002)
    (Here is the signature provided for Exercise 3)
  • Solutions

  • Solution 1 (ps) (pdf)
    (SML code for game-of-24) (SML code for listing Braun trees)
    (The average score of HW1 is 170 out of 200 points)
  • Solution 2
    (SML code for Exercise 5)
    (The average score of HW2 is 120 out of 140 points)
  • Solution 3
    Please see Section 1.4 in the lecture notes (ps) (pdf)
    (SML code for Exercise 3: parser.sml, typechecker.sml, evaluator.sml, top.sml, sources.cm)
    (The average score of HW3 is 210 out of 240 points)
  • Solution 4 (ps) (pdf)
    (The average score of HW4 is 117 out of 140 points)
  • Solution 5 (ps) (pdf)
    (The average score of HW5 is 110 out of 140 points)
  • Examination

  • Midterm (ps) (pdf)
  • Solution to Midterm (ps) (pdf)