BU CAS CS 520
Principles of Programming Languages
Semester: Fall 2008

Course Information

  • Instructor: Hongwei Xi (email: hwxi AT cs DOT bu DOT edu)
  • Instructor's Office Hours: Tuesday 4-6PM and Wednesday 2-3PM
  • Grader: TBA
  • Lecture Times: Tueday & Thursday 12:30-2:00PM
  • Classroom: Room PSY B49, 64-72-86 Cummington Street
  • Midterm: a one-and-one-half hour in-class exam on Thursday, Oct 30, 2008
  • Final: a two-hour exam from 9AM to 11AM on Thursday, Dec 18, 2008
  • 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 type theories in programming and emphasizes the need for mathematical formalism in both describing and analyzing programming languages.

    Prerequisites

  • 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

  • ATS (this mode may be helpful if you use emacs to edit ATS source code)
  • Logistics

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

  • Introduction (ppt) (ps)
  • Notes

  • Inductive Reasoning (pdf) (ps)
  • A Crash Course on ATS
  • Untyped Lambda-Calculus (pdf) (ps)
  • Simply-Typed Lambda-Calculus (pdf) (ps)
  • Dependent Types (pdf) (ps)
  • Linear Types (pdf) (ps)
  • Continuation (pdf) (ps)
  • Code

  • tally-2008-09-04.dats
  • fixity-2008-09-04.dats
  • bintree-2008-09-05.dats
  • list0-2008-09-05.dats
  • weekdays-2008-09-09.dats
  • exp_derivate-2008-09-09.dats
  • utlc_eval-2008-09-18.dats
  • tally-2008-09-30.dats
  • f91-2008-09-30.dats
  • f91-alt-2008-09-30.dats
  • bintree-2008-09-30.dats
  • brauntree-2008-10-02.dats
  • ralist.sats and ralist.dats
  • tally-2008-10-23.dats
  • fact-2008-10-31.dats
  • linear101-2008-11-04.dats
  • linear101-2008-11-06.dats
  • linear102-2008-11-13.dats
  • linear102-2008-11-18.dats
  • daytimetcpclient.dats
  • daytimetcpserver1.dats
  • daytimetcpserver2.dats
  • daytimetcpserver3.dats
  • Reference Books

  • ATS/Anairiats User's Guide (pdf) (ps)
  • 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

  • Monday, October 6, 2008: the last day to withdraw from the class without a "W" grade.
  • Tuesday, 14 Oct, 08: No class (substituting Monday's schedule)
  • Thursday, Oct 30, 2008: in-class midterm exam
  • Monday, November 10, 2008: the last day to withdraw from the class with a "W" grade.
  • Thursday, November 27, 2008: Holiday recess.
  • Thursday, December 18, 2008: final exam from 9AM to 11AM
  • Assignments

  • Assignment 1 (ps) (pdf) (Due on the 16th of September, 2008)
  • Assignment 2 (ps) (pdf) (Due on the 30th of September, 2008)
  • Assignment 3 (ps) (pdf) (f91.dats) (brauntree.dats) (Due on the 16th of October, 2008)
  • Assignment 4 (ps) (pdf) (power.dats) (ralist.sats) (ralist.dats) (ralist.pdf) (Due on the 11th of November, 2008)
  • Assignment 5 (assignment.ps) (assignment.pdf) (sllst.dats) (Due on the 25th of November, 2008)
  • Assignment 6 (assignment.ps) (assignment.pdf) (permute.dats) (Due on the 11th of December, 2008)
  • Solutions

  • Solution 1 (ps) (pdf) (listBraunTreesOfGivenHeight.dats) (Twentyfour)
  • Solution 2 (ps) (pdf) (alnf_subst.dats)
  • Solution 3 (f91_solution.dats) (brauntree_solution.dats)
  • Solution 4 (power_solution.dats) (jaz_power_solution.dats) (test_power.dats) (ralist_solution.dats) (test_ralist.dats)
  • Solution 5 (sllst_solution.dats) (test_sllst.dats)
  • Solution 6 (permute_solution.dats) (test_permute.dats)
  • Examination

  • Midterm Solution (pdf) (ps)