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

Course Information

  • Instructor: Hongwei Xi (email: hwxi AT cs DOT bu DOT edu)
  • Instructor's Office Hours: TR: 12:30-1:30; W: 2:00-3:00; or by appointment
  • Grader: TBA
  • Lecture Times: Tueday & Thursday 11:00-12:30
  • Classroom: Room MCS B31, 111 Cummington Street
  • Midterm:
  • Final:
  • 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 and programs.

    Prerequisites

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

  • Practical Foundations for Programming Languages (draft), by Robert Harper.
  • Types and Programming Languages by Benjamin C. Pierce. ISBN 0-262-16209-1. MIT Press.
  • ATS/Anairiats User's Guide (pdf) (ps)
  • 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)
  • Programming with Dependent Types (pdf) (ps)
  • Untyped Lambda-Calculus (pdf) (ps)
  • Simple Types (pdf) (ps)
  • Dependent Types (pdf) (ps)
  • Linear Types (pdf) (ps)
  • Code

  • MISC
  • 2010-09-02 (Thursday)
  • 2010-09-07 (Tuesday)
  • 2010-09-09 (Thursday)
  • 2010-09-14 (Tuesday)
  • 2010-09-16 (Thursday)
  • 2010-09-28 (Tuesday)
  • 2010-10-19 (Tuesday)
  • 2010-10-21 (Thursday)
  • 2010-10-26 (Tuesday)
  • 2010-election (Tuesday)
  • 2010-11-04 (Thursday)
  • 2010-11-09 (Tuesday)
  • 2010-11-18 (Thursday)
  • 2010-11-30 (Tuesday)
  • 2010-12-02 (Thursday)
  • Mailing List

    Class Calendar

  • Tuesday, 12 Oct, 2010: No class (substituting Monday's schedule)
  • Thursday, 25 Nov, 2010: Holiday recess.
  • Thursday, 9 Dec, 2010: Last day of class
  • Thursday, 16 Dec, 2010: final exam from 9AM to 11AM
  • Assignments

  • Assignment 1 (ps) (pdf) (rbtree.c) (Due on Tuesday, 14th of September, 2010)
  • Assignment 2 (ps) (pdf) (assgn2ex2.dats) (assgn2ex3.dats) (assgn2ex4.dats) (Due on Tuesday, 28th of September, 2010)
  • Assignment 3 (fibeq.dats) (utmeval.sats) (Due on Tuesday, 12th of October, 2010)
  • Assignment 4 (ralist.sats) (ralist.dats) (Due on Thursday, 28th of October, 2010)
  • Assignment 5 (cycbuf.sats) (cycbuf.dats) (cairo.dats) (Due on Tuesday, 23th of November, 2010)
  • Assignment 6 (ps) (pdf) (gtree.dats) (Due on Tuesday, 7th of December, 2010)
  • Solutions

  • Solution 1 (listBraunTreesOfGivenHeight.dats) (listBraunTreesOfGivenHeight1.dats)
  • Solution 2 (assgn2ex1.dats) (assgn2ex2.dats) (assgn2ex3.dats) (assgn2ex4.dats)
  • Solution 3 (fibeq.dats) (utmeval.dats)
  • Solution 4 (ralist.dats)
  • Solution 5 (cycbuf.dats) (cairo.dats)
  • Examination

  • Midterm Exam(Solution)
  • Final Exam(Solution)