CSci 161.10: Software Engineering II
Department of Computer Science
The George Washington University, Spring 2009
CRN 41739 (Lab 42081)Informal System Specifications
- Time Slices
Suppose you visited the archaeology museum in Heraklion on the isle of Crete and were looking at a particularly interesting piece of early Cycladic pottery. Afterwards, you wanted to know what did the contemporary pottery in Japan look like? Or in North America?
Where were there telegraphs in 1878? What did population density look like in 14 BCE? Create an animation of the boundaries of the Roman Empire from the time of Augustus to the time of Justinian. And throw in the other major political contemporaries (oh, but who were the political contemporaries of the Roman Empire? Crate a list.). Let the user choose the color scheme.
This system will design and implement tools so that the user can explore history in as flexible a manner as possible from the comforts of a laptop.
- Never Throw It Away
How much of your hard drive would be used up if you didn't delete any of your email for a year (both sent and received)? How many bytes to store the email addresses of everyone you've ever exchanged email with? Why delete todo items? After all, don't you think 10 years down the road you might want to be reminded that you called the exterminator on 3 Feb 1993? What was your address on 3 Feb 1993? You'll need it to fill out that application for a security clearence. The fact is that hard drives are cheap enough that there is no point in deleting anything.
One reason for not keeping all this information around is that there aren't good tools for managing and navigating hordes of trivial dribs and drabs of information. Perhaps a more important question is what would you do with all these bits if you did keep them around?
This system will collect iformation for your calendar, email, to-do lists, etc. and allow you to easily recall information about your past, discover patterns in your past behavior, and explore the minutiae of your life.
- CodeSearch
This project will result in a "google" for the source in open-source projects. There is now a gigantic amount of open-source code available. The goal of this project is twofold: (1) Search for and identify similarities in code; (2) Search for an identify code that is structurally similar to a search expression. Thus, suppose you are writing code to scan a string and look for blanks. You KNOW this has been done before - but where to find it? One way is to download all open-source projects one by one from SourceForge and grep on comments. A better way is to create a "structural search" tool:
- Enter the search term:
boolean searchForBlanks (char *) { /* Look for blanks in a string */ for (int i=0; i- The search should find actual functions that look like:
int func_String_bl_detect (char[] inputStr, int strLen) { /* Blank detection */ for (k=0; k- How does it do that? By a combination of word search (look for the word "blank" within comments) and structural comparison using parsing.
As part of this project, you will scour through tons of open-source code (automatically, using your tool, of course) and collect statistics on usage patterns—idea proposed by R. Simha.
- Memoir: Context-Archival
This is another linux-kernel type of project, but also involves modifying a browser like Firefox. The goal is to store context information in the Unix file system, perhaps using meta I-nodes or something like that. The thinking is that, archival systems today merely store files without context information. This will make it very difficult for future historians to understand the purpose and context of files. For example, a historian examining the White House electronic file archive 20 years from now will have a terabytes of files to try and make sense of. This project will explore the idea of storing context information so that one can understand where files came from, what other files they relate to, what happened at the time of creation/modification etc. For example, if future historians examined the file /users/home/president/WarJustification.pdf, they would like to know where it came from (from email? from whom? downloaded from a website? which one?) and what other files were being used in context at that time (saddam.gif?). In this project, you will modify the Linux kernel and a browser to make this combination work, and will examine the overhead involved (how does this slow down file accesses?)—idea proposed by R. Simha.
mmburke@gwu.edu Modified: Thu Feb 5 13:06:46 EDT 2009