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)

Inductive Reasoning
(pdf)
(ps)

Untyped LambdaCalculus
(pdf)(ps)

Simple Types
(pdf)
(ps)
Class Calendar
 Tuesday, 6 Sep, 2011: Class begins.
 Thursday, 24 Nov, 2011: Holiday recess.
 Thursday, 8 Dec, 2011: Last day for the class
 Assignment 1: Due on Tuesday, the 20th of September, 2011
Links:
(pdf)
(ps)
(rbtree.c)
 Assignment 2: Due on Tuesday, the 4th of October, 2011
Links:
(html)
(pdf)
 Assignment 3: Due on Tuesday, the 18th of October, 2011
Links:
(html)
(pdf)
(ralst.dats)
(list.dats)
 Assignment 4: Due on Tuesday, the 1st of November, 2011
Links:
(html)
(pdf)
(mylist.dats)
(cycbuf.sats)
(cycbuf.dats)
 Assignment 5: Due on Thursday, the 17th of November, 2011
Links:
(html)
(pdf)
(utmeval.sats)