Project Ideas
The descriptions are relatively
sketchy and the details given are not hard requirements but meant to get you
thinking about possibilities. Each project can be done by one or more students.
If you have specific interests in the general area, we can probably create a
project around these interests.
It would be satisfying if the
project you do could turn into code people actually use. This implies picking
an application for which there is no commercial alternative, ruling out, for
instance, a wikipedia or a collaborative Google-like spreadsheet
or a Writely-like word processor. In fact, these
three systems can be the basis for picking projects. These tools allow us to
create shared information asynchronously or synchronously. What does this
information consist of? Traditional documents? Proably not, as people would want to use traditional tools
such as Word, Excel or
Why not change existing single-user
applications to support collaboration? As a rule that is difficult, because software
does not extend as well as advertised. A previous student has however extended Open Office word processor and
spreadsheet to support rudimentary collaboration. It is possible to extend this
system. Also, it is possible to extend the Eclipse
programming environment, which seems to very amendable to extension. You
can look into other open source software to make collaborative.
Creating a usable application is difficult,
collaborative applications are even harder because they are distributed. You
are encouraged to use two infrastructures developed by my research group which,
given Java objects, automatically create user-interfaces of them and support (synchronous
and asynchronous) sharing of them. Using these systems will give you familiar with
collaboration infrastructures and relieve you from the implementing tedious
details. They are fairly robust at this point and I am willing to fix any bugs
you find. These infrastructures do not support all aspects of collaboration –
in particular, collaborative undo and
locking. You can implement these
features manually in your application if you have time. I am also happy to work
with you in extending the infrastructure to support the missing features, in
case you are more interested in infrastructures rather than specific
applications.
The intellectual challenge in your project will be to (a) survey alternative systems developed elsewhere, (b) develop, implement, and possibly evaluate a design that improves on the state of the art, (c) and write a paper and give a talk on the