4 Project
The purpose of the course project is to help you
integrate what you have learned in the course, and
to engage you in research in the area of computer-aided
reasoning for software. We will take a broad view of
what "software" and "programs" are. This, of course,
includes code in a programming language. But you can
also apply computer-aided reasoning to biological systems
(where programs may be models of cell processes),
to hardware (where programs may be
protocols or
memory models), and to education (where
programs may be geometry constructions). Your project can automate a programming task (such as testing, verification, synthesis, and debugging), or support a new kind of programming construct (such as angelic choice). The possibilities are
endless—
Step |
| Due |
| Deliverable |
[1] Form a 2-3 person team |
| Oct 09 |
| Email to the instructor and TA |
[2] Choose a topic |
| Oct 16 |
| Email to the instructor and TA |
[3] Write a proposal |
| 11pm, Oct 21 |
| 1-2 page paper |
[4] Develop a prototype |
| 11pm, Dec 08 |
| Prototype code |
[5] Demo the prototype |
| 10:30am, Dec 08 |
| 1-slide overview, end-to-end demo |
[6] Write a report |
| 11pm, Dec 08 |
| 5-7 page paper |
Forming a team. The first step is to form a team of 2-3 students, and email the instructor and TA with your names (by Oct 09). This should be easy, but if you are having trouble, talk to the instructor and the TA.
Choosing a topic. Next, choose a topic together with your teammates, and, again, send an email to the staff with your project title and a brief abstract (by Oct 16). Choosing a topic in a new field is not as hard as it may seem. The key is to generate as many ideas as you can, without thinking about whether it is possible to implement them. Just think of cool tools you would like to use or to build, and the instructor will help you define the problem so that you can complete the project in 5 weeks. To this end, schedule a meeting with the instructor to talk about your ideas (well before Oct 16). It is particularly important to schedule this meeting early if you find yourself stuck in the idea-generating stage.
Writing a proposal. Once you have chosen a topic, write a 1-2 page proposal to flesh out your ideas. The proposal should include a precise statement of the problem you are solving; a brief literature survey; and a timeline for developing the prototype. Use a 10pt font to typeset the proposal, and submit it, in PDF format, by 11pm on Oct 21.
Developing a prototype. Start developing your prototype as soon as possible. Do not wait until the last week or two of the quarter! Computer-aided tools are not easy to build, and you will almost certainly run into engineering and performance problems. The instructor will help you come up with solutions, but you will need time to implement them.
Concentrate on getting your tool to work on a few end-to-end scenarios. This is what you want to demo. Five weeks is (generally) not enough time to develop a robust tool that will work for all use-cases. Your goal is to convincingly demonstrate the potential of your idea, and to be able to articulate, in the final report, how your prototype could be extended to a usable tool.
What if your idea doesn’t work out, and you realize your tool will never scale to real problems? That’s okay! This is exploratory research, and as long as you can clearly explain your negative result, you will still get credit for the work.
Presenting your tool. You will demo your tool during the finals week. Aim to show it working on one or two engaging end-to-end scenarios. Prepare a single-slide overview of your project (think of it as an electronic poster), and be ready to explain your technical contribution in 8 minutes. Every member of the team should present.
Introduction and problem statement.
Overview of your approach, and a summary of how it relates to previous work.
Algorithms and Logical Encodings you developed.
Summary of Results, including key design and implementation challenges; how you addressed them (what worked, what didn’t, and why); and how this work could lead to a real tool or a full-length conference paper.
Teamwork—
a one-paragraph description of the individual team member’s contributions. Course Topics—
a one-paragraph description of the course topics applied in the project, and a one-paragraph description (if applicable) of any topics that would have been useful but weren’t covered in the course.
Submit the report, in PDF format, by 11pm on the day of the project presentation and demo (Dec 08). The final submission should also include your overview slide and a ZIP archive with the source code for the tool, Linux binaries (if applicable), benchmarks (if applicable), and a README file describing how to run the tool on your end-to-end scenarios.