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) or equivalents.
Reference Books
Programming Languages
 ATS
(this mode may be helpful if you
use emacs to edit ATS source code)

Untyped LambdaCalculus
(pdf)

Simple Types
(pdf)
Class Calendar
 Assignment 1: Due Tuesday, the 11th of September, 2012
Links:
(assignment.dats)
(assignmentonline.dats)
 Assignment 2: Due Tuesday, the 18th of September, 2012
Links:
(assignment.dats)
 Assignment 3: Due Tuesday, the 25th of September, 2012
Links:
(assignment3.sats)
(assignment3.dats)
 Assignment 4: Due Tuesday, the 2nd of October, 2012
Links:
(assignment4.sats)
(assignment4.dats)
 Assignment 5: Due Thursday, the 11nd of October, 2012
Links:
(assignment5.txt)
 Assignment 6: Due Tuesday, the 30th of October, 2012
Links:
(assignment6_fixedpoint.txt)
(assignment6_ralist.sats)
 Assignment 7: Due on Tuesday, the 21th of November, 2012
Please use the
cairo API in ATS
to draw the following images: