Abstract Algebra: A Geometric Approach