CSE584 (Winter 2001): Assignment #3
Assigned: 13 February 2001
Due: 27 February 2001


  • See the home page for details about turning in the assignment, the specific time for the due date, the assignment's weight, etc.
  • It will be immediately obvious that the form of this assignment is entirely different from Assignments #1 and #2, as I have promised.

The topic of the last two lectures was software evolution, including the underpinnings (why and how does software change) and some tools for reverse engineering (in the very general sense). 

In this assignment you have a choice of what to do; pick either of them, but not both!  I anticipate that assignment #4 will give the same choice, but will require you to pick the "opposite" style of assignment than you do in assignment #3.  (Assignment #4 will focus on more code-level tools, and I'll suggest some specifics for Choice B when I announce that assignment.)

Choice A: A brief research paper and proposal

Pick a topic related to software evolution (most likely but not necessarily one covered in lecture).  Perhaps with help from me, identify a set of roughly 4-6 papers that relate to the topic.  In no more than 10 pages, present a coherent summary of these papers: this should not be primarily a "book report" on each paper, but rather you should put some structure and coherence in your paper that describes how they relate, how they differ, etc.  In 1-2 additional pages, you should identify (at a paragraph apiece) a few (at least two) open research questions related to the topic.  (I've included, in many lectures, some "open questions" slides that capture the kind of information I'm looking for here.)

Choice B: An assessment of a tool

Download a tool, mostly likely Rigi, that is broadly available and apply it to a public domain piece of software.  Based on your experience in applying the tool to that piece of software, write an 5-10 page report on the strengths and weaknesses of the tool, including your view of how it would apply to larger software systems.  (As an example, you might apply Rigi to something like grep or gzip, which you can find from Gnu.  I haven't tried the Rigi parser on these, so I can't guarantee they'll work, but it gives a feel for kind of sizes of software I'd like you to try.)  I am open-minded to the use of other tools, if you can find them and let me know beforehand.