Department
Princeton University

Computer Science 510
Programming Languages
Andrew Appel

Spring 2018

General Information       Schedule       Policies

This schedule and syllabus is subject to change, especially for dates more than 1 week in the future.

Lab sessions are Thursdays 3:30-5:30pm, and you can arrive late or leave early. Lectures are at 3:00pm and I would appreciate it if you arrive on time.

Date Monday,    Wednesday Friday Homework
Feb 5-9 Introduction; functional programming (numbers, lists); basic proofs: Coq Installation Notes; Preface; Basics; Induction; Lists ( Basics.v, Induction.v, Lists.v ) Lab Homework 1
Feb 12-16 Sequent Calculus, Polymorphism, More basic tactics (Poly.v, Tactics.v) Lab Homework 2
Feb 19-23 Logic in Coq, Inductively defined propositions, Curry-Howard correspondence, Maps (Logic.v, IndProp.v, ProofObjects.v, Maps.v) Lab Homework 3
Feb 26-Mar 2 ML programming language
interp.ml, lambda.ml; Caml core language, Caml reference
Sedgewick Algs 3e, §9.7
Lab Homework 4
Mar 5-9 Proving correctness of functional programs, permutations, selection sort, insertion sort (VFA.v, Perm.v, Selection.v, Sort.v)
Maps, Search Trees, Abstract Data Types (Maps.v SearchTree.v, ADT.v)
Lab Homework 5
Mar 12-16 Imperative programs, Automation ( Imp.v, Auto.v); Search trees (SearchTree.v) Take-home midterm due
Spring Break
Mar 26-30 Program Equivalence (Equiv.v), Hoare Logic (Hoare.v) Lab Homework 6
Apr 2-5 Hoare Logic (Hoare2.v), Small-step operational semantics (Smallstep.v), Type systems (lecture notes; Types.v) Lab Homework 7
Apr 9-13 Simply typed lambda calculus; subtyping (lecture notes, Stlc.v, Sub.v) Lab Homework 8
Apr 16-20 Satisfiability (reading: Boolean Satisfiability Solvers); Dafny (selection sort) Lab Homework 9
Apr 23-29 Separation Logic (read Chapters 2 and 3 of PLCC); Verifiable C. Lab
Apr 30-May 4 Verifying C programs (Verifiable C)
May 8 reading period -- no class. Do Homework 10 or Homework 11, not both! Homework 10 due
May 16 Homework 11 due (if you didn't do Homework 10) Homework 11