Evolution of a Computer Application

John J. Wavrik (e-mail)

University of California, San Diego

© 2003, John J. Wavrik

Abstract

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.

Table of Contents

  1. Introduction
  2. Forth
  3. The Forth Language -- a Brief Introduction
    1. The Dictionary
    2. Interpreting
    3. Seeing What Is on the Stack
    4. Compiling
    5. Terminology and Naming Convention
    6. Control Structures
    7. Data
  4. Groups16 (1990 version)
    1. Data Representation
    2. Input and Output
    3. Some First Procedures
    4. Evolution of ORDERS
    5. Finding Isomorphisms
  5. Comments on Improvements
    1. Changing the Language to Fit the Program
    2. Choosing Better Names for Words
    3. Inconsistent Methods of Action
    4. Improving Speed
    5. Forth Style
    6. Eliminating Magic Numbers
    7. Back to the Isomorphism Problem
  6. Groups16 to Groups32 Transition
    1. First Subgroups Package
      1. Overview
      2. Top Level Words and Examples
      3. Detail
  1. Groups16 to Groups32 Transition
    1. Sets
      1. Overview
      2. Top Level Words and Examples
      3. Details
    2. Sets and Subgroups
    3. Listing Subgroups
    4. Some Simple Programs
    5. Groups32
  2. Permutations
    1. Overview
    2. Top Level Words and Examples
    3. The Temporary Storage Problem
    4. Cycle Notation
    5. Details
    6. Temporary Storage
    7. Permutation Groups
    8. Bugs, Error Traps, Etc.
    9. Range Checking
  3. Search
  4. User Interface
  5. Maintaining and Extending the System
    1. Extensions
    2. Redefining Words
    3. Patching
  6. Summary
  7. Resources

Supplementary Information