Software Evolution Lab Projects for Undergraduate and Graduate Students
I'm looking for energetic people who love to design and build systems. I'm
interested in programming tools for understanding and visualizing the
(object-oriented) design and software architecture of large
systems so they can be evolved. I can often provide financial
support for graduate students or exceptionally qualified undergraduates.
There are several kinds of projects (examples are listed at the bottom of
Many of these projects involve object-oriented design and
technology, program visualization, compiler technology or
software engineering. Projects are for both undergraduates (e.g., CSE
199) and graduates (e.g., CSE 293). Many of these projects could also
serve as the basis for a Master's thesis. If you are pursuing a
PhD, these projects are only a starting point. Come see me for additional
projects. As an example of a recent project that came from this page, see Walter Korman's Elbereth
- Building or enhancing software tools, including graphical
- Using software tools: system development or case studies
- Building on or enhancing
- Automating the CSE department: system development or enhancement
For more in-depth information about these projects, you may wish to look at
my lab's research
page, which provides information about current research
projects and recent
papers. But most importantly, don't hesitate to
drop me e-mail or drop by and see me in APM 4210.
Beneficial SkillsProficiency with Java, C/C++, Tcl/Tk, or Common Lisp
programming languages; proficiency with lex/flex, yacc/bison compiler tools.
Beneficial BackgroundSome background in one or more these areas is
- System Construction: Design and construction of large, complicated
- Compilers: Classes such as CSE 131B or CSE
- Software Engineering: Classes such as CSE 110, CSE210, and CSE 218.
Example Tools Projects
- Aspect Browser projects
- Integrate the Nebulous component into the JBuilder
or Forte IDE.
- Design a plug-in mechanism to ease adding new inference tools.
- Add new aspect inference tools to AB or enhance the existing ones,
- computing redundancies
- importing raw data
- Add an aspect agent to Nebulous or the Emacs editor.
- Add an "aspect metrics" feature.
- Integrate StarTool features (see below).
- Enhance the graphical
StarTool programming tools:
- Retarget to C++, FORTRAN, or Java using our simple
- Create a version that is not language-specific (e.g., like grep).
See the searching tools project below, as well.
- Add support for editing program source.
- Searching tools
- Design and implement a ``classifying grep'' that not only matches patterns
in your code but classifies/clusters them according to their similarity. See
for an example of what I'm talking about, but this tool has to parse.
- Design and implement a lightweight grep-like search tool that uses parsing
or token-level matching rather than character-level lexical analysis. See the
for examples of similar tools, or here for
something really similar.
- Figure out how to visualize design problems, perhaps using design patterns, in object-oriented
- Graphically display relationships amongst yacc/bison grammar rules.
- Write a dead-code detector for Java.
- Fast, scalable data-flow analysis
- Redesign a network application or service so that it can tolerate
disconnected operation without significant loss of performance or
Example Development and Case Study Projects
Example CSE Automation Projects
- Design and implement an application for completing a grant budget,
travel voucher, or purchase order.
- Write an application for aiding class scheduling and schedule publishing.