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:
Mutation Testing + Formalization A suggested project format would be to develop a small piece of code, test it using QuickChick, verify it, and add mutations to it using the QuickChick command-line tool. Comprehensive artifacts submitted as projects could find their way to an upcoming verified benchmark suite and lead to a (joint with the rest of the selected projects) publication, at the next ICFP if desired. Another similar possibility is to pick a larger, existing verification project and enhance it with mutation testing + generation.
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.