Abstract algebra with applications