Our group at EDS is developing software to represent, manipulate, and analyze various geometric objects. The goal is that the components of our software will be used as a “tool kit” for application programmers who write code for computer-aided design (CAD) programs. These CAD programs will, in turn, be used as tools to design and analyze such things as automobiles.
My mathematical training is applied in several ways in this job. Prior to writing the software, we often need to do research to find or develop the appropriate algorithms. It is not enough that these algorithms be mathematically correct; they should be efficient and numerically stable. My mathematics professors would probably not like to hear this, but I don't really “believe” a theorem or algorithm until I have implemented and tested the corresponding software! That's when it comes to life for me.
Once the software has been written, it has to be documented and debugged, and people must be shown how to use it. I have found my math background to be useful in all of the above tasks. For instance, it is important to provide a clear, concise explanation of what the software does for those who may be fortunate enough to have to maintain it in the future.
Many of the geometric objects that we build are represented as functions made up of many pieces, each of which is a polynomial. These functions are called “splines.”