Introduction to abstract algebraic structures