Algebra for Computer Science by Carl Gardner & L. Garding