Introduction to abstract algebra