CS264 Projects
Dates:
- Project proposal: Saturday, Mar 12 (1-2 pages submitted by email, see more below on what the proposal should contain)
- Feedback: Mar 14-18, one-on-one meetings
- Project in-class presentations: April 29, May 4 and, if necessary, May 6
- Project papers: due May 17, Tuesday (note that the OSQ retreat will be held May 12-13)
Project Goal:
The goal of the project is to learn at least one aspect of the course in depth, ideally by customizing the course to your research interests. Novel results are welcome but not required.
Types of projects:
As in CS263, there are three types of projects:
-
Research project: Produce a (somewhat) new result, in one of several ways, including: a novel implementation strategy (e.g., use an SAT solver for an analysis problem where SAT has not been used before); a new program analysis problem solved with existing analysis techniques (e.g., use abstract interpretation to find a bug that has not been detected with static analysis before; or, most popular, some analysis needed in your dissertation research project); a new program analysis approach(e.g., a hybrid of static and dynamic analysis).
- Survey project: Pick an area and understand it in some depth (read 3-6 papers carefully and 3-6 superficially), write a report describing the state of the field, comparing key approaches to main problems in the field, and describing open problems.
- Implementation project: Implement an existing program analysis technique and attempt to validate the experimental results in the existing paper; some extensions and modifications to the technique, as well as some minor tuning, are expected. The analysis should be reasonably interesting and sufficiently complex (for example, intraprocedural liveness analysis won't do) but no technical novelty is needed. The implementation doesn't need to use the same analysis framework as the original paper (e.g., use can use BDD-based inference rather than set-based inference) and the benchmark can be different.
Project Ideas
To be posted soon.
Public analysis frameworks (potentially) suitable for course the projects
- C/C++ analysis tools (as presented in class by Daniel Wilkerson)
- bddbddb (John Whaley is willing answer questions from folks working on bddbddb as their course project; also, ask him for a paper on bddbddb that's in preparation)
- Jedd is an extension of Java that adds relations implemented using binary decision diagrams (BDDs) as a data type. It was motivated by the need for a high-level abstraction of BDDs to make it feasible to implement complicated, inter-related program analysis with BDDs. Jedd was the subject of a paper at PLDI 2004.
- Soot is a Java bytecode analysis, transformation, and annotation research framework. (widely used)
- CodeSurfer
- more to be listed soon