To Read: Chapters 1,2 & 4 of PFPL
To Do:
- Install Coq and Metalib
- Complete Ch4.v
Goal: extend & deepen knowledge of programming language theory and types Provide a firm foundation for the sorts of proofs that appear in PL research papers, such as in POPL and ICFP.
Focus: type abstraction and equality in typed lambda calculi
References: Bob Harper's Practical Foundations for Programming Languages (possibly) Appel's Verified Functional Algorithms
Nonfocus: program verification, dependent types
Everyone in here should either be a PhD student or have taken CIS 500. In general, we expect that you have experience with functional programming (OCaml or ML), and have seen a type safety proof for simply-typed lambda calculus.
Although we'll start with some mechanical proofs in Coq, Coq experience is useful but not required.
Who here has:
- taken CIS 500 at Penn?
- self-studied SF (or as part of a class)?
- taken another course on PL theory?
- Used Coq before?
-
If you are taking this class for a grade
- Come to every class prepared (I'll announce the reading for the next class ahead of time)
- You must send me 1-2 questions the morning before each class (via email)
- Be prepared to give one lecture this semester on a chapter in PFPL
- A few homework assignments at the beginning of the semester to make sure everyone is up to speed
- Semester project (in groups) to go deeper on a particular topic
- replicate the proofs in a classic paper (by hand or in Coq)
- extend a classic paper with a new feature
- some other exploration
-
If you are auditing this semester
- Come to every class prepared (I'll announce the reading for the next class ahead of time)
- Send me 1-2 questions before each class
Working with a model of a simple, typed programming language
See Ch4.v