Having a built-in function to do something, e.g., find rank of a matrix, tends to discourage students when they are asked to build up a function of their own that accomplishes the same thing beginning with more basic operations. They just don't appreciate the value of the exercise as a means to building and reinforcing their understanding. Moreover, it becomes too easy for them to check whether their own function works properly; without the higher-level function they formerly had to devise test cases and check their function's results by hand.
On Dec 3, 2012, at 4:04 AM, Andrzej Kozlowski <firstname.lastname@example.org> wrote:
> > On 2 Dec 2012, at 11:01, Murray Eisenberg <email@example.com> wrote: > >> 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. > > But what stops you from continuing to do this once Mathematica has these > new functions? In fact, one of my favourite methods of teaching > Mathematica and mathematics at the same time is to ask students to > emulate with their own code some particular mathematical function that > exists in Mathematica. There is a great deal one can learn by doing this > sort of thing. The the existence of a Mathematica function in this > situation (particularly a well documented one) is actually a great > bonus. Besides, of course, there is a difference between the needs of > teachers and those of researchers and other users - for many purposes > user defined functions are too inefficient for serious work (and even > more so when these users are not expert programmers). On a personal > level: I spend a great deal of my time developing mathematical > structures in Mathematica, but far from being dismayed when they are > made obsolete in new versions by more efficient built-in functions, I am > always happy and excited when this happens. This is because almost > always the existence of these new functions opens up new possibilities, > and quite often things that were quite unrealistic in earlier versions > become easy in a new one. From my perspective, the most exciting thing > about Mathematica 9 I have noticed so far is the ability to easily > simulate various stochastic processes with functions such as > RandomFunction, ContinousMarkovProcess, ItoProcess, etc. This alone is > worth the upgrade even though it makes many and perhaps most of my > contributions to the Wolfram Demonstrations Project obsolete. But that > it the price I am happy to pay as I can already see a number of new > things that I can now do with these functions that did not appear ever > worth attempting before. The same thing happened with the upgrade from > version 7 to 8, with the appearance of the FinancialDerivative function. > > The presence of these new functions in no way makes it more difficult to > teach students the algorithms behind them, but it also makes Mathematica > the best tool I know of for development and application of advanced > financial models, particularly in the area of derivative pricing (in > which I have been interested for many years). > > Of course anyone developing tools for Mathematica for commercial > purposes will have "mixed feelings" when Wolfram Research, with all the > advantages that it has, builds-in functions that make these tools > inefficient and obsolete. However, this is no different from the > experience of many developers of commercial software that suddenly finds > itself competing with functionality included in the operating system. I > have been a user of Apple Macs almost from the beginning and I remember > many times reading and hearing complaints from software developers about > "unfair" competition from Apple. But now we know that this process is > unstoppable and today a vast number of things that once used to need a > commercial (or shareware) program are now either done by the operating > system or by programs freely provided by Apple with the latest version > of Mac OS. (The same thing is true in the Microsoft world). Developers > of these programs have either given up or have found a way to add value > to their programs which is sufficiently large compared to what if > offered form free by Apple, to make them still worth their price to at > least some users. > > I will take this opportunity to respond to a typical "straw man" > argument in another response to this post. I am referring to "those who > say that Mathematica users should never buy a third party application". > I have never read anybody write anything so ridiculous in this forum so > I would like to see some references (if they exists). In fact, I myself > have purchased third-party applications which, not surprisingly, have > eventually become obsolete, but I would never give this as a reason > against buying them. They more than paid back their price once and I > also learned a lot from them. The point I have tried to make is this: > before a user decides to purchase a commercial package he should first > master enough Mathematica to judge whether the kind of things he wants > to do with it can be done without much effort with the standalone > version or not. The decision should be his and it should be an informed > one. What I object to is habitual pouncing on new and obviously not > fully informed users, without even fully finding out their real needs, > and suggesting or insinuating that they should bypass the necessary > learning process by buying a commercial add on package. Also, even when > an add-on package is found useful, it should never be a reason for > skipping the need to learn such things as basic syntax and the working > of the very basic (non mathematical) programming constructs. This is > also the main reason why I am less than enamoured with packages that > provide supposed "short-cuts", that often only appear to be such to > people who have not mastered the foundations of the language. > > Andrzej Kozlowski >
--- Murray Eisenberg firstname.lastname@example.org Mathematics & Statistics Dept. Lederle Graduate Research Tower phone 413 549-1020 (H) University of Massachusetts 413 545-2838 (W) 710 North Pleasant Street fax 413 545-1801 Amherst, MA 01003-9305