Fall Semester 2007

September 6, 2007 – December 10, 2007

Projects

Active Projects for Fall 2007

The following projects were chosen by the students for the Fall 2007 offering of 600.392: Senior Design Project. The projects are listed in no particular order whatsoever.

Cross-platform Extensible WebDAV/DeltaV Module for Firefox

Client: Joe Feise (Endeavors Technologies)
Developers: Ayse Sabuncu, Ben Schuster, Ryan McLelland

In recent years, the Web has evolved into more than just a medium for viewing content. From shared online calendars to Wikipedia to distributed software development, the Web now is a conduit for extensive online collaboration. This has been made possible by the extensibility of the Hypertext Transfer Protocol, HTTP, which provides the foundation for the Web. The two main HTTP extensions to facilitate online collaboration are the WebDAV and DeltaV protocols. These protocols are supported to varying degrees in several web browsers, for example Internet Explorer on Windows, Konqueror on Linux, and Safari on Mac OS X. A glaring omission, however, is the Firefox browser. One of the main WebDAV contributors has developed a limited WebDAV plugin for Firefox, but this plugin relies on the Internet Explorer libraries and therefore only works on Windows and shares the limitation of the WebDAV support in IE. In addition, relying on IE obviously defeats the purpose of Firefox. Therefore, I propose a project developing a platform-independent WebDAV and DeltaV plugin for Firefox. Since protocol development for online collaboration is ongoing (for example the CalDAV protocol for online calendars based on WebDAV) the plugin design needs to provide for easy extensibility.

Pattern Recognition Problems for Biological Images

Client: Ilya Goldberg (National Institute of Aging (NIH), Open Microscopy Environment)
Developers: Eric Ngeo, Joel Frankford, Rodwitt Lai

The context for this project is an existing system for the analysis and classification of biological data based on a rich semantic model. Our goal with this project is to enable users to arrange supervised learning scenarios consisting of image data, feature extraction algorithms, and classification algorithms. Training and testing sets as well as the resulting compound classifiers are tracked in our data base. The system has to be flexible enough to deal with different classification algorithms applied to the same problem, incorporate different testing schemes, as well as mechanisms for correcting (training out) systematic errors. Since this is for scientific research, several kinds of reporting at various levels of detail have to be incorporated also. This is not a pattern recognition project because we have techniques and scenarios already worked out. Instead the focus is on developing a data model flexible enough to deal with the various pattern analysis problems we have encountered, and on developing a user interface (ideally web-based) that enables even casual users to perform sophisticated analysis of available data (think Google Maps for image classifiers). Preferred implementation language is Python as we're in the process of converting most of our existing system to Python as well.

Confirmed Projects

The following projects are currently available for the Fall 2007 offering of 600.392: Senior Design Project. The projects are listed in no particular order whatsoever.

Light-Weight Extreme Programming Tool

Agile software development methods such as eXtreme Programming (XP) prefer informal meetings between clients and developers over detailed requirements analysis and system specification. The artifacts produced in those meetings are user stories: concise descriptions of coherent pieces of functionality, told from the client's perspective. While user stories are the primary organizational tool for agile projects, they are customarily considered less important than other artifacts, certainly less important than actual code. In XP, for example, seven of the 13 practices (more or less directly) address code, while only one practice (partially) addresses user stories. User stories should play a more important role: Instead of viewing them as purely temporary means to steer development, we should carefully track their evolution and leverage user stories as documentation. Instead of viewing them purely as a source of problems to be solved with code, we should link user stories with other artifacts and leverage them as a means of navigation. The goal of this project is to produce a light-weight graphical software engineering tool that supports the XP planning game without being intrusive yet enables user stories to play a more central role in day-to-day development. This work may lead to publication and to continued open source development.

Web-Based Annual Review Letter System

Each year, the JHU Computer Science Department produces personalized review letters for about 70 Ph.D. students. Assembling the letters is complicated because data and textual comments for each student must be contributed, viewed, and revised by various humans and automated scripts, who have various rights and responsibilities in the process. Your challenge is a common one in Information Technology: take the current semi-automated way that we do things around here and make it run smoothly, correctly, and securely behind a web UI that is a joy for all participants to use. You may use any tools that get the job done, including open-source frameworks designed for this kind of "workflow" problem (a.k.a. "business process management"). Such a system (if customizable) would also be useful to many other academic departments and employers, so ideally it will be released online.

SMesh Monitoring and Control

The SMesh wireless mesh network is the first transparent wireless mesh network that provides fast, lossless handoff suitable for VoIP and video applications for any unmodified 802.11 device. The proposed project is about the design and implementation of a monitoring and control sub-system for SMesh that will replace the rudimentary monitor currently in place and add remote control capabilities. The system is in the process of being deployed at a nearby Baltimore neighborhood to provide free Internet connectivity and the proposed monitoring and control system has the chance to play a major role in the success of such deployments.

Note: If you have an 802.11 device such as a laptop with a wireless card, you can immediately become a user of SMesh by searching available wireless networks and selecting the one with smesh in its name (e.g. smesh_net1) in the Engineering Quad, Shaffer, NEB, Barton, etc. No installation is necessary.

Multi-threaded Control of Robotic Systems

We have developed an efficient software infrastructure for multi-threaded control of robot systems. Communication between threads is accomplished using the Command Pattern, where the command object encapsulates the communication mechanism (e.g., direct read/write, queued write, etc.). We would like to extend this to a network scenario using middleware such as CORBA, SOAP, DDS, or Spread. The requirement will be to choose one (or more) middleware solutions, implement the command objects that encapsulate their use, and demonstrate this in a surgical robotics platform. Proficiency with C++ and an understanding of Design Patterns would be helpful.

Autonomous Robotics: Vision and Navigation

We have a little 4-wheel drive robot that does autonomous path planning in an unknown area with unknown obstacles. The main constraint currently is that the on-board laser ranging sensor only works in two dimensions (at about 18" above the ground) and therefore doesn't provide vertical terrain/elevation information. So there is a big problem with handling hills. Our robot also has a pan/tilt/zoom camera (and compass, gyro, sonar, etc.) and I would like to have someone figure out how to use the camera (and/or other sensors) to help the robot "see" better in three dimensions. This project would probably involve the development of image processing algorithms or finding other creative ways for the robot to "see" better while keeping strict power constraints in mind.

Adventure Writer for Facebook

With the recent proliferation of Facebook applications have come a few extremely simplistic adventure games. Some examples: Zombies, Vampires, Pirates and WereWolves. At their core, these games consist of a finite set of character types, states, transitions between states, properties/characteristics a character can possess amongst a few other sets of data. We want to build a Facebook adventure game writer. There should be a method for creating new games, together with a method to "output" the game to a language, in this case FBML. Note that the module for operating the game and outputting the game should be separate, so that if we decide to output the game to XHTML or any other language at a later point in time this would be easy and possible.

Human Subjects Database

I am in need of a multi-platform (mac/pc) database which will enable me to maintain key information regarding human subjects research protocols, track related incoming and outgoing correspondence, and prompt me with reminders and notifications regarding due dates. This database should also enable me to generate reports about its contents and should have the ability to calculate dates and the time lapsed between them. Further, the database should be implemented in such away that there can be multiple users on the network who have differing levels of permissions. Ideally, the new database will be able to import information from an existing FileMakerPro database.

Real-Time OS for Xilinx Virtex-4 FPGA

We have an on-board processor called the SpaceCube which is based on the Xilinx Virtex-4 FPGA device. This device has two PowerPC's inside it, and we would love to have the whole system be able to boot up like a Linux PC so our developers can work just one layer removed from the guts. This project would involve researching real-time operating systems, picking one that is widely used and open source (I'm guessing Linux, but it could be something else), and getting it to run on our system. This may well involve customization of the kernel and custom driver development as well. The outcome should be a nicely package and easily upgradeable distribution that installs easily on our development systems. A Xilinx ML403 development board (which approximates the SpaceCube) is available for use on this project.

Computational Workflow Analyzer and Executor

The context for this project is an existing system for the analysis and classification of biological data based on a rich semantic model. The component to be developed will enable users to define workflows by arranging existing algorithms for data analysis in the form of a directed acyclic graph (DAG). Workflows are analyzed for execution and individual tasks are then distributed to several compute nodes subject to various constraints that ensure good utilization of available resources. Preferred implementation language is Python as we're in the process of converting most of our existing system to Python as well.

Unconfirmed Projects

The following projects are under consideration but have not been confirmed as "available" yet. The projects are listed in no particular order whatsoever.

Efficient Solution of Systems of Diophantine Equations

This project is aimed at implementing an algorithm for solving systems of Diophantine equations. There are a number of standard algorithms available. Students are encouraged to make their own choice with efficiency as the top priority. Java is the preferred language.

Public Vote Counting for Reliable Elections

POMRAD (Public OMR at a Distance) is a way for multiple interested parties to count OMR-able paper ballots transparently and concurrently with minimal help or interference from a centralized authority. The idea has received praise from secure voting advocate Bev Harris (blackboxvoting.org), among others, for its security, simplicity and transparency. An implementation would involve integrating a camera and PC with simple computer vision algorithms (supplied in libraries such as OpenCV or Gandalf) in order to produce a real-time vote count from a live display of ballots. Depending on the progress made, students may also decide to fine-tune the system to work on as many currently OMR-able paper ballot layouts as possible as well as design their own ballots optimized for the POMRAD system. To ensure full transparency, it is preferable that all code be open source, with Linux (optimally using video4linux) as the preferred platform. If developed well and if tests give positive results (as expected) the work may very well be published and the prototype may be further developed and used to ensure the integrity of future elections — possibly affecting history.

Integrated Team Registration System