Concrete Abstract Algebra by Niels Lauritzen