Instructions for the Demonstration

Running the Program

The demonstration is written in Java 1.1, so it should work with many older (4.x) browsers and Java virtual machines (JVM), as well as JVMs based on Java 1.2. It has been successfully tested on a number of platforms, though your milage may vary. Basic usage is straightforward; pressing the button at the bottom of this page will launch the demonstration window. If you don't see the button, a message telling you to turn on java or use a different browser will be in its place. The demonstration program is contained in two java archives, totalling 550 kilobytes of disk space. Depending on your connection, it may take a significant time to transfer to your machine. Furthermore, it may take a few seconds to display the demonstration window once download is complete. The sections below describe in detail how the controls of the program work.

This page is not meant to be a tutorial on java, but if you know how, you may download the java archive file and run the class from within your own java environment.

The Control Bar

The demonstration program is controlled by the following buttons and menus on the Control Bar at the top of the window.

Clears the drawing canvas
Delete Stroke
Deletes the last stroke drawn
Rejection Threshold
Determines the likelihood that symbols will be rejected
Combination Weighting
Determines the likelihood that strokes will be combined
Symbol Models
Sets the symbol set to use
Canvas Options
Sets canvas drawing options


The system currently recognizes the following symbols and notation. Digits, Binary operators (plus, minus, equals, and inequalities), Lowercase latin letters (except 'o'), Uppercase greek sigma and gamma, lowercase greek alpha, beta, gamma, delta, epsilon, sigma, pi, gamma. Recognition of many of these symbols may be lacking because they were trained on a single writer and not every writer draws the symbols in the same way.

The Drawing Canvas

The drawing canvas is similar to the canvas in most drawing programs. After each stroke is drawn, the program reevaluates the expression on the canvas. If the program is unable to assign a stroke to a particular symbol at a value below the Rejection Threshold then it will color the stroke in red. These strokes do not affect the final output of the program. The rejection threshold can be changed in the control bar.

If the system does not recognize a character you wrote, or you've made a mistake, you can erase the strokes in the character. This can be accomplished in one of two ways. The first is using the Delete Stroke button. The second is simply to scribble out unwanted characters. In order to ensure that your scribble gestures are recognized, make broad strokes over the stroke(s) that you would like to delete.

The Output

The expression recognition algorithm is actually quite fast on most systems. Furthermore, it stores the results of previous computations, so future evaluations can be more efficient. End-to-end performance may not be possible in real time, however, because typesetting the recognized expression can be quite slow. If your system cannot keep up with your writing, write slower, and wait for the system to finish typesetting the expression before writing the next stroke.

The other forms of output are LaTeX, a text-based markup language for typesetting documents, and MathML, an XML extension for mathematical expressions. MathML, incidentally, is not supported by the major browsers yet.

Engine Parameters

The control bar contains menus which set two parameters that effect the recognition an expression. The first of these is the Rejection Threshold. The system uses this parameter to determine whether or not to reject a stroke or set of strokes as being unrecognizable. If it is set to a low value, then most strokes will be rejected as unrecognizable. If it is set to a high value, the it will try to assign an interpretation to most strokes. If it is turned off, then the system will attempt to interpret every stroke. Rejected strokes are drawn in red.

The second engine parameter is the Combination Weighting. Without going into too much detail, the combination weighting determine how much the engine favors combine strokes into multi-stroke symbols over interpreting them as single stroke symbols. A high weighting will make it easier for multiple strokes to be combined into a single symbol, while a lower value will favor interpreting the strokes individually.

Symbol Models

Currently, there are two set of symbol models available, those computed from a single writer and those computed from a number of writers. The multi-user models should be more reliable for most people, but they are only used on the digits, binary operators, and certain lowercase letters.

Canvas Options

Canvas Options is a menu which can be used to select which auxillary information is drawn on the canvas.

Draw Symbol Boxes
Draws boxes around partitioned symbols
Draw Baselines
Draw Expression Boxes
Draws boxes around subexpressions
Draw Tree
Draws the Minimum Spanning Tree of all the strokes

These items are provided to visualize certain aspects of the recognition algorithm, and may be turned on and off without effecting the underlying expression. By default, all of these items are turned off except Draw Symbol Boxes.


You have either turned off java or your web browser does not run java applets. If you would like to use the demonstration, turn on java or use a java-capable browser.