Abstract Algebra: A First Course