BU CAS CS 320
Concepts of Programming Languages
Semester: Summer 2010

Course Information

  • Instructor: Hongwei Xi
  • Instructor's Office Hours: MTWR 5-6 / by appointment
  • Teaching Fellow: Zhiqiang Ren (TF's webpage for this course)
  • Lecture Times: MTWR: 3:00 -- 5:00PM
  • Classroom: MCS, Room B33, 111 Cummington Street
  • Class suspended on Monday, 31 May, 2010
  • Midterm1: a two-hour in-class exam on Friday, 4 June, 2010
  • Midterm2: a two-hour in-class exam on Thursday, 17 June, 2010
  • Final: a two-hour in-class exam on Thursday, 24 June, 2010
  • 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 programming.

    ATS is a functional programming language that makes extensive use of types in capturing programming invariants. We are to explain how datatypes in ATS 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 ATS 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

  • CS112; Familiarity with programming in general.
  • Textbook

  • Programming in Standard ML (draft), by Robert Harper.
  • Reference Books

  • ATS User's Guide (pdf) (ps)
  • ML for the working programmer (second edition), by Lawrence C. Paulson. ISBN 0-521-56543. 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.
  • Programming Languages

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

  • Syllabus (pdf) (ps)
  • Introduction (pdf)
  • 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 simple type system (pdf) (ps)
  • Mailing List

  • The class mailing-list is cascs320a1-l@bu.edu. Please find information on using the mailing-list here.
  • Class Calendar

  • Class begins on Tuesday, 18 May, 2010
  • There is no class on Monday, 31 May, 2010
  • Midterm1: a two-hour in-class exam on Friday, 4 June, 2010
  • Midterm2: a two-hour in-class exam on Thursday, 17 June, 2010
  • Final: a two-hour in-class exam on Thursday, June 24, 2010
  • Assignments

  • Assignment 1 (sats) (Due Tuesday, May 25, 2010)
  • Assignment 2 (sats) (Due Wednesday, June 2, 2010)
  • Assignment 3 (sats) (Due Wednesday, June 9, 2010)
  • Assignment 4 (sats) (Due Wednesday, June 16, 2010)
  • Assignment 5 (sats) (Due Wednesday, June 23, 2010)
  • Solutions

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

  • Please find a sample midterm here.
  • Please find solutions to the questions in midterm1 here.
  • Please find solutions to the questions in midterm2 here.
  • Please find solutions to the questions in final here.