Active set methods and the semismooth Newton method for convex quadratic programming