Course Information
 Instructor:
Hongwei Xi (email: hwxiATbuDOTedu)
 Instructor's Office: MCS 287
 Instructor's Office Hours: T: 12; W: 121; R: 122; by appointment
 Teaching Fellow:
TF's classpage (email: arenATbuDOTedu)
 TF Office Hours: Monday from 3 to 5pm at PSY234.
 Grader: TBA

Syllabus:
(pdf)

A weekbyweek schedule
 Lecture Times: MTWR 10:0012:00
 Classroom: GCB 203
 Midterm1: TakeHome, Thursday, June 5, 2014
 Midterm2: TakeHome, Thursday, June 19, 2014
 Final: InClass, Thursday, 26 June, 2014, from 10:00 to 12:00
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)
Class Calendar
 Assignment 0: Due Friday, 23 of May, 2014
Links:
(Makefile)
(assignment0plain)
(assignment0syntaxhilighted)
 Assignment 11: Due Friday, 23 of May, 2014
Links:
(Makefile)
(assignment11.sats)
(assignment11.dats)
(CS3202014Summer.hats)
 Assignment 12: Due Tuesday, 27 of May, 2014
Links:
(Makefile)
(assignment12.sats)
(assignment12.dats)
 Assignment 21: Due Friday, 30 of May, 2014
Links:
(Makefile)
(assignment21.sats)
(assignment21.dats)
 Assignment 22: Due Tuesday, the 3rd of June, 2014
Links:
(Makefile)
(assignment22.sats)
(assignment22.dats)
(Sierpinski_carpet)(40 bonus points)
 Assignment 31: Due Friday, the 6th of June, 2014
Links:
(Makefile)
(assignment31.sats)
(assignment31.dats)
 Assignment 32: Due Tuesday, the 10th of June, 2014
Links:
(Makefile)
(assignment32.sats)
(assignment32.dats)
 Assignment 41: Due Friday, the 13th of June, 2014
Links:
(Makefile)
(assignment41.sats)
(assignment41.dats)
 Assignment 42: Due Tuesday, the 17th of June, 2014
Links:
(Makefile)
(assignment42.sats)
(assignment42.dats(30 bonus points)
(parallelquicksortanim)(40 bonus points)
 Assignment 5: Due Tuesday, the 24th of June, 2014
Links:
(WormGame)
 Assignment 6: Due Thursday, the 26th of June, 2014
Links:
(Makefile)
(assignment6.sats)
(assignment6.dats)
 A twohour inclass exam on Thursday, 19 June, 2014.
Please find related files in this directory: midterm2
 A twohour exam from 10:00 to 12:00 on Thursday, 26 June, 2014.

