Students will more deeply explore a relevant topic of their interest as part of project undertaken the latter portion of the class. Students should meet with the instructor to agree on the basic direction of their project, and ultimately produce a 1-page plan to be approved by the instructor. The timeline for meeting and proposal are given above.
We are open to any proposal that arguably deepens the student’s knowledge. Depending on the scope of the project, projects with 2-3 students are also allowed. Here are several categories of project that would acceptable:
Topic self study. Students can pick a topic of interest they would like to learn more about and organize a plan to study it. This plan can include reading chapters in relevant texts, reading relevant research papers, and experimenting with open-source tools. As a deliverable, students may write a report describing what they learned, and/or carry out exercises drawn from relevant sources. The particulars must be agreed upon with the instructor.
Two weeks prior to the proposal due date we will have a week of lectures that present a brief overview of many topics of potential interest. Students can use this overview to seed their interest and work with the instructors on a plan for self study.
Reproduction or mechanization. Many program analysis tools or languages are available; a good project might involve running the tool on a benchmark suite in an attempt to reproduce a result given in a paper. The benchmark suite could be varied, or the tool could be compared against a different baseline, in an attempt to (in)validate general claims made in a paper.
Type systems, program analyses, and other ideas are often formalized in research papers using mathematical notation. A good project would be to mechanize such a formalization in Coq and with it prove relevant theorems. In essence, this is "reproducing" a result with greater confidence. Older, simpler papers might be good targets here. Instructors will have suggestions. On a related note: Students could also propose to formalize a system that was previously described only informally and potentially (dis)prove unverified claims about it.
Research project. Students are also free to propose a research project, which aims to develop and evaluate a new idea. Doing this might involve a formalization, implementation/extension, or both. Given the short timeline, such projects will likely involve multiple students. We are open to having projects joint with another class.
Due 10/31/2017 at Midnight
The proposal should be 2 pages at most, and should describe what you want to do and include a timeline indicating when you expect to accomplish particular milestones. We will provide comments on this preliminary proposal by Nov. 2.
You should submit the proposal in the form of a PDF via the submit server.
Due 11/07/2017 at Midnight
Revise your preliminary proposal according to the comments provided.
Due 12/07/2017 at Midnight
The final project writeup should be between 6 and 10 pages, depending on the nature of the project. The project submission should also include any other materials produced while carrying out the project, e.g. problem sets completed, code written, proofs mechanized, etc.