Programming Languages, Graduate Center, Fall 2013

Time and Location Lectures: T 11:45am-1:45pm, Room C415A
Recitation/Office Hour: M 4:30-5:30pm, CS Lab
Personnel Instructor: Prof. Liang Huang (huang @ cs.qc)
Teaching Assistant: Kai Zhao (kzhao @ gc.cuny)
Prerequisites 1. (required) fluent in at least two languages among C/C++, Java, and Python.
2. (preferred) an undergraduate course on compilers and basic familiarity with predicate logic.
Textbook Benjamin Pierce (2002). Types and Programming Languages (TAPL). MIT Press.
Grading Weekly Homework: 20%. Quiz: 7%. Midterm I: 20%. Quiz II: 10+5=15%. Final: 28%. Class Participation: 10%.


This course introduces basic concepts and techniques in the foundational study of programming languages. The central theme is the view of individual programs and whole languages as mathematical objects about which precise claims may be made and proved. Particular topics include functional programming, operational semantics, λ-calculus, type systems and type safety, polymorphism and subtyping, and foundations of object-oriented programming.
Part 0: Background
Functional programming with Haskell
Inductive Proofs
Part I: Basics
Operational semantics
The λ-calculus
Part II: Type systems
Basic types
Simply typed λ-calculus
Type safety


T Sep 3 Intro and Haskell: functions, list comprehensions, recursions, pattern-matching
HW1: Basic Haskell
T Sep 10 discussions of HW1
Haskell: types and basic type classes, recursive datastructures
slides (including HW1 solutions)
HW2: More Haskell
T Sep 17 Inductive Proofs and Operational Semantics (TAPL Ch 1 and Ch 3)
slides (including HW2 solutions)
HW3: Inductive Proofs & Operational Semantics
T Sep 24 Quiz (20 min).
Intro to λ-calculus (TAPL Ch 5)
HW4: λ-calculus I
T Oct 1 Continue on λ-calculus (TAPL Ch 5); same slides as above HW5: λ-calculus II
T Oct 8 More on λ-calculus (beyond TAPL): full beta-reduction, call-by-name Y-combinator, lists, behaviorial equivalence, inductive proofs about λ-calculus.
Review Questions I
T Oct 15 Monday Schedule: No PL Class, but Office Hour at 4:30pm
T Oct 22 Midterm I
T Oct 29 Simple Types; Simply Typed Lambda Calculus HW7 Haskell typechecker for the pair language
T Nov 5 Substitution Lemma; Typability HW8
T Nov 12 Simple Extensions (unit, ascription, tuples, records, variants) HW9
T Nov 19 References HW10
T Nov 26 review
T Dec 3 Quiz II (60 min)
HW11 (also redo quiz2)
T Dec 10 Featherweight Java HW12
T Dec 17 Final Review review questions

First Exam

Review guidelines here.

Related Courses

Liang Huang
Last modified: Mon Aug 5 18:45:06 EDT 2013