Possibly the most common thing I use a computer for is the [Todd-Coxeter algorithm][3], which enumerating finite index subgroups of a finitely presented group. I can't count how many times I have used it. It comes standard with the computer package [gap][1] (or [MAGMA][2] which has similar functionality, and is freely available at North American Universities). I think this algorithm might be worth a mention in your book, because it's cool, but rarely something you would ever want to do by hand. For me, this is often what I want a computer to do, quickly compute some examples, so I can tell how half-baked an idea of mine might be. Also, both gap and magma give you the option to generate either the complete list of subgroups at a given index or iterate through the list of subgroups if you just are looking for an example with a given property. So it would could serve as a useful way to introduce iterators. [1]: http://www.gap-system.org/ [2]: http://magma.maths.usyd.edu.au/magma/ [3]: http://en.wikipedia.org/wiki/Todd%E2%80%93Coxeter_algorithm