** Symbolic
Differentiation**

Software that displays the symbolic derivative of a function specified through
keyboard interactions.

**Required Operation**

As the user presses keys, a representation of a function in conventional
mathematical notation (parentheses, multiplication indicated by juxtaposition,
exponents indicated by superscripts, etc) appears on the screen. At the user's
request, the software displays the derivative of the function on the screen,
again in conventional mathematical notation. Graphics and software that reacts
to key presses and mouse gestures is discussed in the competitive
pachinko project.

**Functions to Differentiate**

Polynomials, trigonometric functions (sin, cos, tan), natural logarithms and
exponentials, and sums, products, ratios, and compositions of these functions.
Your software should do something to simplify the formula it delivers as the
derivative, but using methods to avoid complex results rather than methods that
simplify results will be adequate for purposes of this software. (Algebraic
simplification is a much more difficult problem, in general, than symbolic
differentiation.)

**Existing Software**

The symbolic differentiation problem has been widely studied and is a favorite
assignment in many computer science courses. You will be able to find a wealth
of material on the subject, including programs in Lisp and DrScheme. As usual,
you are welcome to use any software you find, as long as you cite your sources
in commentary included in your software. It is unlikely that you will find any
software that implements the kind of interface that you will want your software
to have.