

Will it rot my students' brains if they use Mathematica? - mahipal
http://www.theodoregray.com/BrainRot/

======
drewcrawford
This is a sensitive subject for me. I was in a Linear Algebra class where I
was asked on an exam to do, among lots of other things, a (nonzero)
determinant of a 6x6 matrix by hand. I got no credit for making an arithmetic
mistake.

I'm a CS major. I will never in my life (outside of school) be asked to solve
a difficult math problem without having a ridiculously overpowered tool like
Mathematica in front of me.

I'm all for teaching hard math to students. But we need to be teaching them
how to do things their calculator can't (or better yet) teaching them how to
build the calculator. Not teaching them how to add 600 numbers by hand.

~~~
hansen
You use the same formula to explicitly calculate the determinant in abstract
proof.

How can a student understand that, for example, the volume form on a
riemannian manifold is invariant under a change of the chart, w/o knowing how
to explicitly calculate a determinant?

We all hate cumbersome and (at a first sight) useless calculations, but it's
the easiest way to become familiar with the math behind it.

~~~
tome
You really ought not to use the formula for anything other than calculation.
You should characterise the determinant as the highest order form in the
Exterior Algebra[1] and then use the fact that it's a group homomorphism so
det(UAU^{-1}) = det(A)

That's not to say that I agree with the GP. There's a lot to be said for
testing the ability to perform abstract calculations with no practial use. A
dimension 6 determinant seems completely unreasonable though.

[1] <http://en.wikipedia.org/wiki/Exterior_algebra#Functoriality>

~~~
ghurlman
It's posts like this that remind me how now, 10 years out of college in my
software dev career, just how much math I've _completely_ forgotten. I like to
think I'd pick it up again quickly if need be - but that's the thing... I've
forgotten it, because I've never needed it.

------
jacobolus
Using a programming language is perfectly reasonable. The thing I have a
problem with is the scam of graphing calculators in high school calculus
classes: basically in the interest of guaranteeing a revenue stream for Texas
Instruments, curriculum has been filled with obtuse impossible-to-
symbolically-reason-about equations, which have little relevance to any of the
important concepts being taught. Only a trivially small percentage of the
students will ever be placed in a situation where they need to regularly use
that graphing calculator or similar tools in the future (basically just
engineers). The Soviet high-school-age math curriculum of a few decades ago is
in my opinion (and admittedly quite limited personal experience) vastly
superior to what we do in the US. Much better to aim for understanding of
underlying mechanisms, and make people do real proofs (and not the bullshit
proofs of “geometry” courses), instead of just punching (effectively)
arithmetic into calculators.

I think banning calculators from all elementary/secondary math education would
be a tremendous benefit because (a) it would improve familiarity with basic
number relationships, and (b) it would force problem authors to keep the
numbers reasonable, and push problems toward higher levels of abstraction,
rather than simply tacking on extra digits after the decimal point. Most
importantly, anyone who understands the mathematical structures and
relationships involved can learn how to compute with a calculator or similar
tool in about a week. Someone who only knows how to punch things into a
calculator but doesn’t have a solid grasp of what it means is in a very tough
spot as soon as anything slightly out-of-the-ordinary pops up.

~~~
jules
I think it would be much more valuable to learn how the algorithms inside the
graphing calculator work, instead of learning how to use a calculator.
Integration, differential equation solving and root finding can be programmed
in just a couple lines of code. It is amazing how well these numerical methods
work.

E.g. solving the differential equation y' = y from t=0,y=1 to t=1 computes
exp(1):

    
    
        import math
    
        def simple(f,t,t1,y=0.0,dt=0.001):
          while t<t1:
            y += f(t,y)*dt
            t += dt
          return y
    
        def rk4(f,t,t1,y=0.0,dt=0.001):
          while t<t1:
            k1 = f(t,y)
            k2 = f(t+dt/2, y+dt*k1/2)
            k3 = f(t+dt/2, y+dt*k2/2)
            k4 = f(t+dt, y+dt*k3)
            y += (k1+2*k2+2*k3+k4)*dt/6
            t += dt
          return y
    
        def f(t,y): return y
          
        print "Simple:", simple(f, 0.0, 1.0, 1.0)
        print "   RK4:", rk4(f, 0.0, 1.0, 1.0)
        print "math.e:", math.e
    

This prints:

    
    
        Simple: 2.71692393224
           RK4: 2.71828182846
        math.e: 2.71828182846
    

Or perhaps Newton's method to solve x^2 = 2, solution x=sqrt(2):

    
    
        def newton(f, fprime, x=0.1, n=10):
          for i in xrange(0,n):
            x -= f(x)/fprime(x)
          return x
    
        def g(x): return x**2 - 2
        def gprime(x): return 2*x # derivative of g
    
        print newton(g, gprime)
        print math.sqrt(2)
    

Result:

    
    
        1.41421356237
        1.41421356237
    

Note that 10 iterations are enough to get all the digits that Python prints
correct.

In just 13 lines of code we have tools for effectively solving any ordinary
differential y' = f(t,y) equation and for solving f(x) = 0 for many functions
f. Solving y' = f(t,y) where f(t,y) is a function of t alone gives us
integration. E.g. integrating 1/t from t=1 to t=2:

    
    
        rk4(lambda t,y: 1/t, 1.0, 2.0)
    

(but there are better methods for integration than general purpose
differential equation solvers)

~~~
alextp
I agree. Numeric methods have taught me far more than learning simple
programmable analytic tricks.

Specially solving reccurrences and summations, which mathematica can do very
well, and I will almost always make a silly mistake when trying to do it by
hand.

~~~
arghnoname
Analytic tricks can help reduce a problem that is either numerically unstable
or simply too big to estimate quickly into something that can be estimated in
a stable or way or at all.

~~~
jules
I agree that numerical methods are not a substitute for analytic tricks, you
need analytic tricks to come up with the algorithms and to understand why they
work! But learning how to use a particular calculator is not important (that
is what I'd like to see replaced by learning the algorithms). And even for
analytic tricks it's often much more enlightening to code the algorithm. For
example I learned much more by coding an algorithm for factoring an arbitrary
polynomial over Q than doing any number of factorizations by hand. I don't
think that many people are even aware that there is an algorithm for factoring
an arbitrary polynomial. They either don't even consider it a potential
algorithmic problem or they think that it might be impossible to write an
algorithm to solve it.

------
substack
This reminds me of a story from all the way back in high school algebra. I had
just got a ti-83 calculator that year and was having fun writing basic
programs for it. One of the class topics towards the end of the semester was
the normal distribution and we were expected to memorize the percentages up to
3 standard deviations. I hated having to remember fixed quantities, so I wrote
a program to calculate what I later learned were Riemann sums on the equation
for the normal distribution I saw tucked away in the textbook.

I wrote a lot of programs like that one throughout high school and into
college, and for me it was far more educational to solve a problem once and
for through automation than to memorize constants, formulas, or to solve
particular instances over and over.

~~~
varaon
In high school they would ask us to clear the memory, and show the success
message on-screen. A program to simulate a wipe would've been quite possible,
I imagine.

~~~
rabidgnat
You don't even need a program. The TI-83Plus lets you create backups that
survive wipes

<http://www.youtube.com/watch?v=weBNfd26_r0>

------
rmundo
If it helps with exploring concepts without distracting from what the course
is trying to teach, sure. But I think high school math is generally too basic
to warrant using Mathematica as anything but a plotting tool. Doing math
problems by hand slows you down and gives you more space to think about the
problem in your head, versus having a computer simulate a bunch of outcomes
for you.

Every college STEM major, however, should know how to use it. It is an
incredibly powerful tool.

~~~
chancho
Textbooks are enough of a boondogle. Forcing entire generations of students to
learn things like Matlab and Mathematica only sustains their ridiculous price
tags. The student versions being so cheap does not make the situation better,
it makes it worse. It's borderline rent seeking.

There are plenty of free (capital and lower case 'f') alternatives, like
Python, Fortran, etc. They may not be as 'powerful' of tools but they are
adequate for teaching the basics of how to translate formal mathematical
reasoning into concrete code. The only things that Mathematica, Maple and
Matlab add are pre-packaged library functions that do all the hard work for
you. This is what makes them powerful tools and if the student, after he or
she graduates, decides that power is worth the price that's fine, but getting
them hooked on it while in school is detrimental to their learning for all the
reasons being discussed in this thread.

------
jwess
"Life is not 'easy to use'" such a great statement, in reference to software
that panders to the impatience of most consumers, and their desire for
constant stimulation. It reminded me of the programs I use which were _not_
initially easy: Emacs, gnuplot and LaTeX, but after investing some time to
learn them, I realized that they're some of the most productive and well
designed programs I've ever used. Great article, or dialogue rather.

