is a book by Niels Lauritzen that I just checked out. My initial impression is that it is well written and contains many interesting gems. It certainly looked like a good book to teach from, although the topics covered are a little broad and thus I suspect not in enough details for a student struggling to learn abstract algebra.
One of the gems was how a computational number theorist, Thomas R Nicely, nicely found a flaw in Pentium’s floating point unit. The book provided this link to the discoverer’s site and as usual, wikipedia has a nice coverage.
Other gems include Sam Loyd’s 15-puzzle and of course the last chapter on Grobner Bases.