The system has been widely deployed. The first implementation was done
in Common Lisp. The lastest version (CFUF) is a C implementation
embedded in an Scheme interpreter. It targets one of the drawbacks of
the initial version (namely, execution speed). On the other hand, the
data structure and programming interface is still tied to Lisp.

The goal of this project is to improve the interface to FUF in the
following directions:

Provide an embedding of the existing CFUF into the Java Virtual
Machine by means of the Java Native Interface (JNI). The definition of
an Application Programming Interface (API) suitable for working with
FUF would be a first step in the whole migration of the system to a
whole re-implementation in Java (a putative JFUF).

Provide a better encoding for the input of the FUF system, both
from the perspective of language independence and/or supporting
tools. An XML encoding of structures like the ones shown above would
be of interest.

This project is a very nice opportunity to get involved with the
not-so-well-known field of Natural Language
Generation, while getting hands-on experience with real-life JNI
programming. There is plenty of space in this project for the student
to develop personal skills and creativity, for instance, on the design
of the target API.

We have our first deliverable, an alpha release of an API to access
FUF/SURGE functionality in Java, written by Howard Chu
(hhc42@columbia). It is available for download. Take a look at known issues before starting to work with
it. You can also browse the JavaDoc documentation online. A mailing
list is also available.