CMSC 631, Fall 2004

Program Analysis and Understanding



Students will be expected to complete a substantial research project during the semester on a topic related to the class. Projects may be completed individually or in groups of at most 2. The expectations for group projects will be twice that of individual projects. Students will write up the results of their project and give a brief presentation to the class and other interested parties at the end of the semester.


Kinds of Projects

Projects on any subject related to the topics covered in class are acceptable. If you are taking two classes that require projects, then with the agreement of the other instructor you may be able to do a single (larger) combined project for both classes. There are two main kinds of projects: a survey project and a research project.

The Survey Project

  1. Pick an area in which you are interested
  2. Read thoroughly 3-6 papers, and read at least superficially 3-6 other papers. I will help, but you will need to do work to find the papers.
  3. Write a survey of what you have learned:
  4. Keep the scope narrow enough so you can say something interesting
The Research Project

In general, I recommend that you try to do a research project. Usually research projects involve some survey work and some implementation work. There are many kinds of research projects, including the following:

Doing a good research project is harder than doing a survey, but ultimately much more rewarding. If you want to do a research project in an area you are not yet sufficiently familiar with, you should start out with a brief survey project and turn it into a research project once you know more about the area. One important caveat: While your research project may be very open ended, be sure that you have a well-defined goal for the end of the semester so that you have something to write-up and present.

The Paper

Your write-up at the end of the semester should be in the form of a research paper. You should include an abstract and an introduction summarizing your motivation and your accomplishments. The intermediate sections should contain full details about what you did. End with a conclusion putting the project in perspective and mentioning open problems, and a bibliography of cited papers. Research papers should also include a related work section. Your write-up should be 5-15 pages, as necessary.

The paper should be typeset and made available in electronic form.

The Presentation

At the end of the semester, you will give a presentation about your project. Note that after the presentation you may continue to work on your project, so it is okay if your project is not quite complete. If we can manage to fit everyone in, presentations will be 20 minutes long, plus 5 minutes for questions. I recommend preparing slides for your talk. Depending on how long it takes you per slide, you may want anywhere from 8-15 slides; try your talk out ahead of time to see how long it takes.

Suggestions for Research Projects

(Expect this list to grow in the next couple of weeks. Last update 9/19/04.)

Other Suggestions for Finding Projects

Here is a list of papers about interesting tools or techniques; we may/will cover some of these in the rest of the class, but clearly we will not have time to talk about all of them. You may want to read some to get ideas for projects.

Front Ends

Any program analysis that works on a real language needs a parser for that language. Fortunately, there are many existing front-ends for popular languages. CQual has a robust C parser that you can use, and ifr you want to work in O'Caml, CIL has proven very popular with 631 students in the past; Elkhound is a C++ parser; and Soot and BCEL are systems for working with Java bytecodes.

Valid HTML 4.01!

Web Accessibility