convex optimization notes