My friend Alexander Hulpke at Colorado State University in Fort Collins was one of the principal authors of the computer algebra system GAP. This is one of my favorite discrete algebra packages and is the golden standard for any computational group theory. However, it runs as a terminal process and I prefer working in Mathematica, so I wrote an pretty tool called GAPLink that interfaces the two via the java runtime.
To use GAPLink simply download and compile the GAP core system (run $./configure and then $make). Then download my notebook, insert the appropriate path to the gap.sh shell script found in the bin directory of the folder where you installed GAP, and finally run the notebook and establish the link (you must have java installed). To be sure the connection is established properly, execute the cell that runs the testall.g file (which should take about 30 seconds to complete).
With GAPLink you can vastly extend Mathematica's limited group theory functionality. Here are some of the groups Mathematica already knows about:
I've included basic functions for translation of datatypes like GAPCycles, GAPGroup, and GroupPropertyQ. For example, with the latter function you can use GAP's internal algorithms for computing subgroup counts, detect supersolvable groups, or even compute when a group is polycyclic. Here are some property computations via GAP on the dihedral group of order 16:
I find this tool immensely useful and until Mathematica's interoperability is brought into the 21st century it's the only way to go, enjoy!