Final Project
- Proposal due: 11/18
- Project due: 12/15
- Points: 60
You can work alone or in pairs. Each undergraduate student is expected to take on roughly one “unit” of work (to be defined below); each graduate student, two “units.”
Topics
Your projects can involve programming, writing, or giving a talk, or any combination of the three. (For example, you can write a program and take a few minutes in class to demonstrate it.)
Programming
You can write an extension to your interpreter from PP 1-3, or write a completely new program that relates somehow to the course material. The deliverables will be:
Your code (in a .tgz file, or in a private Git repository). It can be in any language you want. A rough length guideline is that a “unit” is 100-200 lines of Python, although it’s difficult to measure substance by lines of code.
A description of what you did (in a PDF or plain text file). It doesn’t need to be long, but it should include a brief English description of what you implemented, plus the formal semantics of what you implemented (or a citation/link to the semantics).
Below are some suggested programming topics.
- Add an extension to your interpreter from PP 1-3:
- Call-by-need evaluation (1 unit)
- Algebraic datatypes (1 unit)
- Type inference (2 units)
- State (1 unit)
- Exceptions (1 unit)
- A more exotic effect like resumable exceptions, generators, nondeterminism, automatic differentiation, etc.
- Write a compiler from λ-calculus to C (2 units)
- or from ELVM assembler to λ-calculus (2 units)
- Design your own programming language and write an interpreter
Writing
You can write a paper on any topic related to the course material (but not covered in the course itself). Ideally, this would be a tutorial that is accessible to other students in the class. The deliverable would be just the paper itself (in a PDF file); a rough length guideline is that a “unit” is 3 pages, single-spaced.
Past topics:
Introduction to denotational semantics
Explanation of the proof of confluence of β-reduction (Church-Rosser Theorem)
Talking
Your deliverables will be the talk itself and any notes or slides you used (in a PDF file). A rough guideline is that a “unit” is about 15 minutes. There is time on 12/05 and 12/07 for extra topics.
Instructions
By 11/18, please submit (in Canvas) a short description of what you want to do. There’s no minimum length, but it should be clear and specific enough that I can guess how much work it will take. Proposals that meet this requirement will get the full 10 points.
Once I’ve approved your proposal, it’s a promise that if you complete everything you propose, you’ll get at least a 40 out of 50 on the rest of the project.
By 12/15, please submit (in Canvas) all the deliverables for your project (in the formats described above).
Rubric
Criterion | Points |
---|---|
Proposal is clear and specific | 10 |
Project does everything proposed | 40 |
Code/writing/presentation quality | 10 |