The first applet implements part one of the assignment: the four curves.
The second applet implements part two of the assignment: the b-spline surface. This applet also contains a Bezier surface, implemented via recursive subdivision with a fixed depth of recursion.
The third applet also implements part two of the assignment, but this time the Bezier surface is implemented via adaptive subdivision. Note how the Bezier mesh adaptively increases the level of subdivision as the curvature is increased. The cracking problem can also be seen in the mesh.