BU CAS CS 320
Concepts of Programming Languages
Semester: Fall 2006

Course Information

  • Instructor: Hongwei Xi
  • Instructor's Office Hours: W 2:30-4:00 / Thu 12:30-2:00 / by appointment
  • Teaching Fellow: Likai Liu
  • TF's Office Hours: Tue 3:00-4:30 / F 1:30-3:00
  • Lecture Times: TR: 11AM -- 12:30PM
  • Classroom: MCS, Room B33, 111 Cummington Street
  • Midterm1: a one-and-one-half-hour in-class exam on Thursday, 19 October, 2006
  • Midterm2: a one-and-one-half-hour in-class exam on Tuesday, 14 November, 2006
  • Final: a two-hour in-class exam officially scheduled from 9AM -- 11AM on Tuesday, 19 December, 2006
  • 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.

    Standard ML (SML) is a functional programming language that makes extensive use of types in capturing programming invariants. We are to explain how datatypes in SML can be employed to conveniently model data structures and how pattern matching can facilitate programming with datatypes. Also, we are to make use of the module system of SML in the construction of (relatively) large programs.

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

    Prerequisites

  • Familiarity with programming in general.
  • Textbook

  • ML for the working programmer (second edition), by Lawrence C. Paulson. ISBN 0-521-56543. Cambridge University Press.
  • Reference Books

  • Programming in Standard ML (draft), by Robert Harper.
  • 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.
  • Programming Languages

  • Standard ML of New Jersey
  • Links

  • Syllabus (pdf) (ps)
  • Introduction (ppt) (pdf) (ps)
  • Schedules
  • How to use gsubmit to submit homework?
  • Some guidelines for submitting your homework (pdf) (ps)
  • Archived Messages
  • Notes and Code

  • Inductive Reasoning (pdf) (ps)
  • A crash course on SML (pdf) (ps)
  • A simple type system (pdf) (ps)
  • Code
  • 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 Tuesday, 5 September, 2006.
  • No class on Tuesday, 10 October 2006.
  • No class on Thursday, 23 November 2006.
  • Class ends on Tuesday, December 12, 2006.
  • Midterm1: a one-and-one-half-hour in-class exam on Thursday, 19 October, 2006
  • Midterm2: a one-and-one-half-hour in-class exam on Tuesday, 14 November, 2006
  • Final: a two-hour in-class exam officially scheduled from 9-11AM on Tuesday, 19 December, 2006
  • Assignments

  • Assignment 1 (ps) (pdf) (Due Tuesday, September 19, 2006)
  • Assignment 2 (pdf) (ps) (Due Tuesday, September 26, 2006)
  • Assignment 3 (pdf) (ps) (Due Thursday, October 05, 2006)
  • Assignment 4 (pdf) (ps) (Due Tuesday, October 17, 2006)
  • Assignment 5 (pdf) (ps) (Due Thursday, November 2, 2006)
  • Assignment 6 (zip) (Due Tuesday, December 12, 2006)
    (This assignment is worth 200 points. In addition, there are up to 100 bonus points for an implementation that can at least break even)
  • Assignment 7 (pdf) (ps) (Due Thursday, November 16, 2006)
    (This short assginment is worth 60 points)
  • Assignment 8 (pdf) (ps) (Due Thursday, December 7, 2006)
  • Solutions

  • Solution 1 (txt)
  • Solution 2 (exercise 1) (exercise 2)
  • Solution 3 (solution)
  • Solution 4 (solution)
  • Solution 5 (solution)
  • Solution 7 (solution)
  • Solution 8 (solution-1-and-6.sml) (solution-2-5.pdf) (solution-2-5.ps)
  • Examinations

  • Midterm I
  • Midterm II