A First Undergraduate Course in Abstract Algebra