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%. |
T Sep 3 | Intro and Haskell: functions, list comprehensions, recursions, pattern-matching slides | 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. slides | Review Questions I |
T Oct 15 | Monday Schedule: No PL Class, but Office Hour at 4:30pm | |
T Oct 22 | Midterm I | HW6 |
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) subtyping | HW11 (also redo quiz2) |
T Dec 10 | Featherweight Java | HW12 |
T Dec 17 | Final Review | review questions |