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

Course Information

  • Instructor: Hongwei Xi (email: hwxiATbuDOTedu)
  • Instructor's Office: MCS 287
  • Instructor's Office Hours: Tue: 5-6pm; Wed: 5-6pm; by appointment
  • Teaching Fellow: TF's classpage (email: arenATbuDOTedu)
  • TF Office Hours: Office hour: Mon 5:00-6:30pm; Thu 1:00-2:30pm; by appointment
  • Grader: TBA
  • Syllabus: (pdf)
  • A week-by-week schedule
  • Lecture Times: MTWR 3:00-5:00pm
  • Classroom: EPC 201
  • Midterm1: Take-Home, Thursday, June 4, 2015
  • Midterm2: Take-Home, Thursday, June 18, 2015
  • Final: In-Class, Thursday, 25 June, 2015, from 3:00 to 5:00pm

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 programming language that makes pervasive use of types in capturing programming invariants. We will be learning how datatypes in ATS can be used to conveniently model data structures and how pattern matching can be used to facilitate programming with datatypes. Also, we are to make extensive use of abstract types in the construction of (relatively) large and complex programs.

Ultimately, we would like to make a convincing argument that programming can be a great deal of fun if you do it the right way!

Prerequisites

  • CS112 (CS Intro II) or equivalents.

Textbook

Reference Books

Programming Languages

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

Notes

Class Calendar

    Assignments

    • Assignment 0: Due Friday, 22 of May, 2015

      Links:
      (Makefile)
      (assign00-plain)
      (assign00-syntax-hilighted)

    • Assignment 1: Due Monday, 25 of May, 2015

      Links: (assign01)

    • Assignment 1-2: Due Monday, 25 of May, 2015

      Links: (assign01-2)

    • Assignment 1-3: Due Monday, 25 of May, 2015

      Links: (assign01-3)

    • Assignment 2: Due Friday, 29 of May, 2015

      Links: (assign02)

    • Assignment 2-2: Due Friday, 29 of May, 2015

      Links: (assign02-2)

    • Assignment 2-3: Due Friday, 29 of May, 2015

      Links: (assign02-3)

    • Assignment 3: Due Tuesday, 2 of June, 2015

      Links: (assign03)

    • Assignment 4: Due Tuesday, 9 of June, 2015

      Links: (assign04)

    • Assignment 5: Due Tuesday, 16 of June, 2015

      Links: (assign05)

    • Assignment 5-2: Due Tuesday, 16 of June, 2015

      Links: (assign05-2)

    Midterm 1

    • A take-home exam on Thursday, 4 June, 2015.
      Please find related files in this directory: midterm1

    Midterm 2

    • A take-home exam on Thursday, 18 June, 2015.
      Please find related files in this directory: midterm2

    Final Exam

    • A two-hour in-class exam from 3 to 5pm on Thursday, 25 June, 2015.

    Solutions

    This page is maintained by Hongwei Xi (email: hwxiATcsDOTbuDOTedu).