GAP: Groups, Algorithms, Programming. This is a powerful program for doing calculations in group theory. It includes a Library of several million groups. To access this program from your math dept. account add, once and for all, /pkgs/gap to your path (if it's not already there), for example by adding the following line to the file .cshrc in your home directory: set path = ( /pkgs/gap/ $path . ) Then you can always start the program with the command "gap". For immediate help with the program, type ? (return) after the prompt "gap>" shows up (takes a few seconds). There is also lots of info at All gap commands are terminated by a ";" followed by "return". To leave the program, type "quit;". You can do some simple arithmetic: gap> 2^20*3^11 +5; 185752092677 gap> Gcd(123123,22); 11 You can also do some number theory, linear algebra, etc. (See manual.) The specialty of the program is in group theory. For instance, try the following command: the output is the number of groups of order i for all i between 4 and 60. (These bounds can be changed, although the upper one should not be more than 2001.) gap> for i in [4..60] do Print(i," ",NumberSmallGroups(i),"\n"); od; Try this one too: gap> for i in [1..10] do Print(i," ",NumberSmallGroups(2^i),"\n"); od; Here's another way to do the same thing. First define a function which outputs for certain integers determined by GAP (including all n<2002) the pair [n,#n] where #n is the number of groups of order n. Then use that function. gap> GroupsOfOrder:=function(n) # number of groups of order n > return [IdFunc(n), NumberSmallGroups(n) ]; > end;; gap> GroupsOfOrder(9); [ 9, 2 ] gap> List([4..60], GroupsOfOrder); Explore at your leisure. ************************************ For references (some historical, some recent) on the problem of constructing groups of a given order, check out http://www.research.att.com/projects/OEIS?Anum=A000001