Ideals, Varieties, and Algorithms:An Introduction to Comput