On this page:
1 Project Proposal
1.1 Project ideas
2 Artifact
3 Project Report
8.6

Project

[This page is from a previous version of the course, which focused more on implementation of advanced features, so this is probably not the most appropriate list of suggestions for this years course. It will be updated as we go.]

There will be a final course project to be completed over the last several weeks of the course. The project will involve conducting a research project on the design and implementation of programming languages.

1 Project Proposal

Due: March 29

The project proposal is a short (2-4 page) document that sketches out the problem and proposed solution which will be investigated in your research project.

The project proposal should have a descriptive title and list all of the co-authors contributing to this project. You may work individually or with any number of collabatorators.

The project proposal should motivate a problem within the field of programming languages (or within another field that can be solved with programming language techniques). Your project does NOT need to be novel, although a novel project has a better chance of leading to a publishable result. You should take inspiration from papers published in reputable conferences or journals. For PL, the main conferences are PLDI, ICFP, POPL, and OOPSLA, but there are many more. If you’d like guidance on other venues, please ask.

The best way to motivate and discuss a problem is to use concrete examples to bolster the discussion.

The final deliverables for you project will include:

The project proposal should sketch a proposed approach to the problem identified in the proposal. Describe what methods or techniques will be used. The proposal should also describe how the success of the proposed solution will be measured. This may include things like proving theorems, conducting empirical evaluations, or other metrics.

The proposal should include a discussion of related work from the literature and cite each reference that is discussed. The proposal should identify a few (between 1 and 3) primary references which will closely guide the approach of the project, but also discuss several (at least two, but potentially many more) secondary references that are closely related by not directly guiding the proposed work.

Projects should be scoped in a way that at least preliminary results can be achieved and reported on by the end of the course. Good projects proposals have incremental milestones so that results can still be shown even if the work isn’t fully completed by the deadline (and it’s often good to think about a larger scope for a project in case you’re interested in continuing with it after the semester ends.)

All final projects must be accompanied by a software "artifact." Often these artifacts are prototype implementations of a language design or feature. You may build your project’s artifact from scratch or you may modify or extend an existing software (subject to that software’s license). You may use the 430 materials as a basis if you’d like, although you are not required to do so.

1.1 Project ideas

This list of project ideas is intended to help get you started if you’re not sure what to work on. It is not meant to be exhaustive.

2 Artifact

Due: end of semester

3 Project Report

Due: end of semester