> However, I've always had mixed feelings as Mathematica has grown to > build in more and more mathematical functions. At times this has taken > the edge off what was a valuable exercise for my undergraduate students: > defining more complicated functions -- e.g., div in vector analysis or > nullSpace in linear algebra -- that forced students to understand the > precise underlying definitions and algorithms. And it tended to take > away a sense of power and accomplishment when students could start by > defining the simplest kind of function, such as performing a single > elementary row operation, and step-by-step building ever more > complicated functions, culminating in something relatively > sophisticated, such as finding the orthogonal projection of a vector > upon the span of a given set of vectors, and even going further, such as > using the latter to find the least-squares solution to an overdetermined > linear system.
If you have control over each student's Mathematica (e.g. if it is on the network) why not add some startup code to disable the relevant functions with UnProtect, etc.
Then after the students code their own examples, you could re-enable the Mathematica version, and let them compare and contrast!
The help pages are stored as notebooks in the installation directory tree, so it would be easy to remove these as well!
If they have home copies, that is not quite so easy, but you could bury the code in some coursework startup code - particularly if it went to the internet for updates!