Algebraic Geometry: A Problem Solving Approach