Harvard University, FAS

Home
Syllabus
Lecture Notes

Textbooks
PL Resources
Coq Resources

Course topics

  1. Introduction to Coq.
  2. Relations, inference rules, and induction.
  3. Syntax: concrete vs. abstract.
  4. Operational semantics for IMP: big-step, small-step.
  5. Denotational semantics for IMP.
  6. Axiomatic semantics for IMP.
  7. Case study: proof-carrying code.
  8. Simple types.
  9. Variables, scope, binding, and functions.
  10. Polymorphism.
  11. Exceptions, continuations.
  12. Concurrency.
  13. Pure type systems, Curry-Howard, and CiC.
  14. Objects, classes and modules.

Assignments

Assignments will be due at 11 AM (the start of class). Please e-mail to jyang [at] eecs.harvard.edu. Late homeworks may be graded but will receive a score of 0. The lowest homework score may be dropped.
NumberAssignmentDueSolutions
0Finger exercisesMonday, 2.11Desai's solutions
1Proofs with IMPWednesday, 2.20IMP solutions
Project proposalDescriptionWednesday, 2.20
2Denotational semanticsFriday, 2.29Abel's solutions
Finalized project proposalHigh-level design document,
"Hello World" program(s)
Friday, 2.29
3Simply typed lambda calculusMonday, 3.17
MidtermIn class
Study guide
Wednesday, 3.19
"Significant" programSee belowFriday, 3.21
Term paperSee belowLast week of classes
4CPSWednesday, 4.9Seiler's solutions
5Type inferenceFriday, 4.18
FinalHarvard Hall 202
Study guide
Tuesday, 5.20 9:15 AM

Resources

Term project

There will be a 2-part term project:
  1. Pick an "unusual" language. Build something substantial in it (e.g., a web server). Submit code with documentation and some comments on the language by Friday, 3.21.
  2. Explore history and literature surrounding language. Evaluate the language qualitatively and comparatively.
The term project has two objectives:
  • To introduce you to an "interesting" language with which you are unfamiliar.
  • To have you prove that you can digest material on your own and present the information to others in a coherent way. Communication matters.
You are encouraged to use LaTeX for your paper. There will be prizes for wackiest language, best coding project, and best writeup.

Suggested languages:
AdaStatically typed, imperative, and OO. Inspired C++'s generics.
HaskellPure functional.
LispFunctional language based on lambda calculus.
Modula-3Safe language with OO, generics, multithreading, exception handling, and garbage collection.
PrologLogic programming.
SmalltalkPure OO.

See the History of Programming Languages wiki page for more on programming languages. It may also be useful to consult these genealogical diagrams on the history of programming languages. Come talk to us and we can give you pointers as to how to install compilers/interpreters and what sorts of programs would be appropriate for the language.

Grading

Roughly one assignment per week (drop lowest grade) 60% of grade
Two exams 10% of grade each
10 page term paper 15% of grade
Whether Prof. Morrisett likes you 5% of grade

Course textbooks