New Things     

Evolution of a Computer Application
This article discusses an approach for developing computer software suited to exploration and experimentation. This approach provides an environment very congenial for prototyping, experimenting with new algorithms for research, and testing ideas for instructional software.

The idea is to provide a mathematician with tools for creating a specialized language tailored for work in a specific area or problem together with an interactive software system. A rudimentary language and skeleton system are produced first. In response to the needs of the work, flesh is added to the skeleton and the language becomes more fully developed. A special-purpose system, therefore, evolves as it is used.  The most important characteristics of such systems are their interactive nature, extensibility, ease in modification, and flexibility.

It is difficult to convey by description what it feels like to use an approach. It is necessary to provide experience. This is an electronic article which illustrates the evolutionary approach using Groups32.  The article blends text exposition with access to computer software. Two versions of Groups32 are available for downloading: an early version (1990) and a recent version (2000).  The article discusses these and the transitional steps.

This approach makes use of a language, Forth, suited for creating application-
oriented languages. Forth provides an interactive development environment yet it can produce software comparable in speed to that produced using conventional compiled languages. It is suited for easily creating extensible interactive systems. It is intended that this approach be useful for a working mathematician. Forth
is simple and easy to learn. An introduction to Forth is included in the article together with a Forth development system.

Evolution of Groups32
Groups32 is a typical example of a software system which evolved. It was originally created to solve a particular problem:  find a quick way to determine whether two small groups (order 1-16) are isomorphic.  Eventually it was extended to incorporate groups of orders 1-32 and offered a variety of useful commands.

Reviewers of the early version suggested developing Groups32 as an instructional program. This led to adding features which made it suitable for testing ideas for instructional software.

Abstract Algebra is a theoretical subject stressing proofs. The goal is to integrate use of software into a traditional course rather than build a course around the use of software. The guidelines are:

1.  The software should be easy and quick to use.
2.  The software should be accessible.
3.  The software should be useful in a traditional course.
4.  The software should enhance thinking ability.

During classroom tests, Groups32 was made available in a networked computer lab -- allowing changes to be made during the course. Eventually Groups32 was made available on the Internet. This allows students to use it at home, independent of their platform.

A complete article on the development of Groups32 now appears as

“Evolution of a Computer Application” in JOMA vol 3 (September 2003).
                  JOMA article                      preprint (pdf)

To access Groups32 over the Internet see the Groups32 webpage.

A preprint is available of an article On Using Groups32 in Instruction. The article in final form appears in the July/August 2004 issue of International Journal of Mathematical Education in Science and Technology (IJMEST) vol. 35 no 4 (2004), 475-485.

Groups32 - IDENTIFY command

A new IDENTIFY command has been added on an experimental basis. The user is prompted for a group number.  The program computes information which allows it to uniquely identify the group (up to isomorphism).

The IDENTIFY command also computes a smallest generating set and permutation representations for these generators.  Note that the permutation comes from left multiplication  by the generator -- and gives the Cayley embedding of a group of order n in Sn.  The command also gives the description of the group as a member of the Small Group Library which was added to the most recent version of GAP (version 4r4) in 2002.

This command is most useful for identifying groups that have been imported  (for example, a permutation group generated by the PERMGRP subpackage and installed as group 1).  It also will be helpful for those who would like to use facilities of GAP to further investigate a particular group.


G3>> IDENTIFY   Group Number 9
    G32 number: 9   Order: 7
    GAP SmallGroup(7,1)
B = (1 2 3 4 5 6 7 )

G9>> IDENTIFY   Group Number 8
    G32 number: 8   Order: 6
    GAP SmallGroup(6,1)
B = (1 2 3 )(4 6 5 )
D = (1 4 )(2 5 )(3 6 )