In this article I discuss the process of producing a computer software system for mathematical research or instruction. I show how a mathematician can create a special-purpose computer language to facilitate development of a system.
Mathematical work benefits from the use of software that can be modified and extended as it is used. I show the process of creating a software system of this type by discussing several critical stages in the development of Groups32, a system for working with groups of low order.
Editor's note: This article is presented in two forms, HTML and PDF. The former is our "publication of record" in our standard format. The author intends this article to be read while using the associated computer programs. You may prefer to use the PDF file, which was designed to facilitate reading while interacting with the software. The article is long. If you prefer to read offline, you can download both the PDF file and the associated software. For more details on using the PDF file, read the author's Tips for Reading this Article -- or, if you know already that you want to read in PDF format (whether online or offline), go right to that version, which also contains the reading Tips and software links.
Resource note: A version of the Groups32 system being discussed in this article is accessible on the Internet at Groups32 Web page. This Web page contains instructions for accessing Groups32 via telnet and some written material including a sample session. This version has been used with classes and in REU projects.