Applied Abstract Algebra by Rudolf Lidl, Gunter Pilz & Chris Godsil