Guidelines
The purpose of a student-defined project is to (1) involve you in ongoing research projects, (2) leverage your unique background in some way, and/or (3) leverage other work in which you are involved. In general, any special project should be of a caliber that can generate results publishable in reviewed outlets like workshops or conferences (often requiring some additional work beyond the time spent in this class). You may link your project work with the topics investigated in the term papers, but both are separate deliverables.
Proposals
To propose your project for this class, you must submit the following materials:
The first step must include both development (e.g., coding, experimentation) and background work, such as producing a bibliography of relevant papers and having read them, having designed suitable algorithms/approaches, and having learned or looked at suitable tools to be used for your project, including target platforms.
The second step, typically after the class midterm, should involve having produced much of the software necessary and having debugged it.
The third step should include not only software testing but also evaluation, on the platforms you have chosen. Such evaluations may include theoretical results if you choose to develop or experiment with a novel algorithm, for instance, but it should also include experimental results.
The final deliverable not only includes the actual software but also a report, which is outlined next.
Final Report
The on-line final report regarding your project should have the following parts:
Facilities Available for CS7210 Projects
1. 'Hack' cluster (physically part of the NetLab facility described next:
Contact Sanjay Kumar (ksanjay) or Ivan Ganev (ganev@cc) for details on hardware/software setup.
2. NetLab cluster machine: cluster of over 40 machines, able to emulate arbitrary Internet topologies and able to run multiple operating systems. Also able to run mobile system emulations using the MobiEmu support infrastructure.
Contact Himanshu Raj (rhim@cc) or Sanjay Kumar (ksanjay@cc) for more information and machine access.
3. High end cluster facilities, one comprised of 30 dual Itanium IIs, the other comprised of over 50 dual 64-bit PIVs.
Contact Matt Wolf (mwolf@cc) for more information and machine access.
4. 'Enterprise' computing clusters: a typical 3-tier setup using an IBM blade server as a backend and HP and IBM and workstations as frontends.
Contact Mohammed Mansour (mansour@cc) for more detail and/or for hardware access.
5. Handheld computers using wireless links, including Compaq iPAQ and XScale-based (Sitsang) machines.
Contact Ripal Nathuji (rnathuji@cc) for additional information.
6. Embedded communication subsystems, using Intel's IXP2400 network routers on a small cluster machine:
Contact Ada Gavrilovska (ada@cc) for more information on IXPs.
7. For research involving high performance systems or graphics, large-scale visualization media, including an Immersadesk, a video wall, an Access Grid node, and potential access to high end network links connecting Georgia Tech with remote institutions.
Contact Matt Wolf (mwolf@cc) for more information.
8. Special hardware, including virtualization-capable (VT instruction set) and multi-core machines.
Contact Himanshu Raj (rhim@cc) or Matt Wolf (mwolf@cc) for more information.
Sample Projects
These are simply some ideas that came to my mind. You are NOT bound by these ideas. In fact, I'd welcome alternative ideas, especially those involving other infrastructures like Chord, Pastry, ... or those involving innovative distributed algorithms or methods:
1. Experiment/work with Microsoft's .net infrastructure. For instance, first use its SOAP remote invocation functionality, then enhance it to improve SOAP performance. Enhancements are possible along two directions: 1) work with other students to design a new implementation of the SOAP protocol based on an open source release associated with Apache (contact bala@cc for more information), then (2) further extend its ability to deal with larger application data.
2. Work with realistic enterprise system infrastructures, such as IBM's Websphere or open source products like JBOSS, or SOAP implementations. Sample work with such infrastructures involves changing their key communication primitives (e.g., making RMI network aware) or developing or enhancing applications that require their rich functionality (contact mansour@cc or sandip@cc).
3. Industry developments in middleware involve three different support infrastructures, one being the Java-based approaches like Websphere, another centered around .net, and a third focused the publish/subscribe model of communication. Our research group has been developing a high performance pub/sub infrastructure, termed ECho, which has recently been extended to make it easier to create efficient very large scale pub/sub applications and to create new failure recovery methods. The extensions makes it easier to dynamically create overlay networks mapped to appropriate machines and network links. They also make it easy to create new methods for dealing with failures, including those studied in this class. Students can perform a wide variety of projects, including (1) automatic generation of and management of certain pub/sub functionality (e.g., the operators applied to the events traversing the overlay network) (contact lofstead@cc or vibhore@cc, the former experimenting with XML-based representations of such operators and the latter involved with database operator-like formulation; (2) algorithms to create and update overlay networks, based on network feedback (contact ztcai@cc) or based on other resource monitoring (contact sandip@cc) or formulations of distributed trust (contact ramesh@cc) or dealing with failures (contact vibhore@cc); and (3) new applications that utilize the rich middleware functionality provided by the overlay or pub/sub models (contact the instructor). Also of interest are uses of infrastructures like these in mobile systems (e.g., with the robotics applications we are studying jointly with Tucker Balch) (contact kjohara@cc for more information).
4. Develop sample distributed applications. Most interesting are: (1) ubiquitous or embedded applications that involve both real-time sensing and reactions to sensor data and/or use portable or mobile machines, (2) experimentation with adaptive applications, including video transfers (raw video or MPEG/SPEG encoded) and evaluating their ability to run on wireless and embedded devices and systems, (3) innovative distributed applications including video games, remote robot control, immersive systems, using real-time feeds (e.g., gotten from Atlanta's traffic web pages or from sports actions) and/or large data sets (e.g., earth observational data). Propose to instructors and also contact mwolf@cc or eisen@cc for information or project ideas.