I've recently taken a calculus problem (multidimensional real optimization) I guess for the first time since I was an student.
While your description has some merit, there's a huge amount of trivia in the format of "I can do X, I just have to do Y first", "X has no known solution, try something else", and "operation X is very useful, try it". That goes away, and everything gets way harder.
I've always felt that if I had done all of my calculus with Mathematica I would have left college with an excellent grasp on how to use higher level functions provided by Mathematica that would have largely abstracted away all of this.
Of course, the higher level functions might get covered in cobwebs - but I suspect not the same way; I would have kept these higher level skills up to date because:
- I recently went though a couple of books on Bayes and computer vision. I would have used Mathematica - refreshing my memory.
- I sometimes need to do some stats / analysis - Refresh...
- I recently picked up a Student's guide to Maxwell's equations - Refresh...
- I need to help my children with Calculus...
If I had been using a high level tool my whole life I think I actually would make use of calculus and other mathematics.
Yeah, you should always, always code what you're thinking about, IMHO. I once turned in a take home differential geometry final in the form of an ipython notebook because I found computing curvature coefficients so tedious. Debugging the thing to pass all my unit tests (not to mention solving the test question) probably have me the best understanding of anyone in the class.
I had a similar experience - I learned symbolic differentiation largely because I happened to pick up a book on Prolog about the time we started covering it at school, and the book gave symbolic differentiation as an example. Not having a Prolog interpreter, I rewrote the thing in Pascal, and then wrote an expression parser for it. Debugging my Pascal translation really hammered home the rules for me at the time (and subsequently writing an expression parser for it was what got me interested in compilers).
That's roughly what I did, and it worked out about as well you predict. As soon as I understood what was going on with some kind of math, I'd use whatever tools I had to automate it: calculators at first, then computer algebra systems, numpy, whatever. No regrets; it was a great time-saver with very few drawbacks, and I made good educational use of the time it freed up.
While your description has some merit, there's a huge amount of trivia in the format of "I can do X, I just have to do Y first", "X has no known solution, try something else", and "operation X is very useful, try it". That goes away, and everything gets way harder.