Class Projects

A major component of this course is a class project. All students are expected to select and complete a course project, either individually or in groups of two or three (I would encourage you to team up to work on larger scale projects and produce higher quality results). The project can be original research related in a broad sense to programming semantics or logic. Alternatively, it can be in the form of a survey paper exploring more in-depth topics covered in the course or on related topics not covered in the course.

Please aim high! I am sure best research projects from the course can eventually lead to good conference publications as in my other graduate-level classes in the past (e.g., ICSE and IEEE S&P papers).

Here are some sample papers resulted from class projects:

Schedule (tentative)

Please choose a project topic and discuss it with me. If you do not have a topic, I can try to suggest something when we meet.

04/29/08: project proposals due

Write a one to two page project proposal:

  1. To describe and motivate the problem. What is the problem? Why is it interesting to solve it?
  2. To describe the related work. What other people have done? What issues remain or have not yet been addressed well?
  3. To describe your approach. How do you plan to tackle the problem? What is your general approach? Argue why it is feasible and better?
  4. To outline a work schedule. When would you like to achieve what?

05/20/08: midterm progress reports due

Please write a one to two page report to describe your progress. What you have done so far? What remains? What is your plan for the rest of the project?

06/09/08: project presentations

Each team will prepare a 20 minute presentation to show off your projects. For some advice on preparing oral presentations, please follow this link.

06/11/08: final reports due

You should write a final report (as a conference-style paper) to describe what you have achieved:

  1. Abstract. About 200 words to summary your project.
  2. Introduction. To describe and motivate the problem, high-level overview of your approach, summarize your results. Stress what is novel about your work.
  3. Approach. Detailed description of your approach. Highlight the main technical difficulties and novelties.
  4. Implementation and results. If appropriate, you should describe your implementation and experimental results. Explain how to interpret your numbers and results if applicable.
  5. Related work. Detailed discussion of related work. Should stress how these relate to your work. Simply list and desribe what other people did is not sufficient.
  6. Conclusions. Again summarize the work and discuss possible future work.
  7. References. List the papers that you have cited.
You can again follow this link for some advice on writing.

The Elements of Style is a concise and excellent reference on writing.