Will it rot my students' brains if they use Mathematica?
theodoregray.com
theodoregray.com
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.
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.
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
Unless the professor is evil, "compute this 6x6 determinant" is really asking "do you know the properties of determinants which will simplify this problem?"
Potentially, with an infinite amount of time and scratch paper, etc., doing the determinant of one 6x6 in a homework setting might be a worthwhile activity.
However, presenting a nonzero nonsparse 6x6 as a "break" between two formal proofs on a large timed exam is not my idea of the level of arithmetic agility that should be expected of an undergrad CS student.
No doubt there are great insights to be gained from application of the determinant formula. One that occurred to me at the time was "Computationally, what is the best order to perform these operations to get a numerically exact result? What is the time complexity of a perfect algorithm to determine the best-exact order? Is there a faster approximation that still provides good results?" etc. Unfortunately, I never pursued any of these arguably-more-relevant questions, because I was busy getting my rote multiplication up to speed. I never even thought of some of your applications, because I was too busy with nonsense to make connections.
While this is a point example, it in many ways is representative of my math education.
I always thought that the learning process was held up by the need to constantly reinforce things I learned a long time ago. For example, electrical circuits classes at Purdue do not allow you to use calculators and must therefore make numbers that work out nicely to keep the math manageable. However, this means that your problems are not particularly realistic; 4.7 uF capacitors, 33 mH inductors, and 2.2 kohm resistors are far more common than 1/2 F, 1 H, and 1 ohm resistors. When I taught senior design, I was stunned to find students looking for super-huge capacitors, but that's all they had seen on their exams up until that point. Likewise, complicated FET sizing problems may require a complex system of equations. Students are short-changed by having to design circuits with only one or two unknowns so the math can be done by hand.
On the other hand, mathematics courses are supposed to teach you how to solve these problems by hand. A TI-89 or Mathematica renders my first three semesters of calculus useless. However, those skills are necessary for understanding probability, electromagnetics, and all sorts of advanced material. Calculators with symbolic manipulation cannot possibly be allowed in those classes. Otherwise, students will have superficial understanding of all the dependent courses.
IMHO, the only answer to this question is "it depends." We can explore much deeper levels of mathematics, science, and engineering if students aren't burdened with basic arithmetic, but we must ensure that students are only able to take shortcuts after they have demonstrated mastery of the material using manual computation.
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.
In particular, it lets you, when first introduced to a topic, play around with it, and get past the hump of "Really? Is that true?" I liked my calculator in high school for letting me experiment. I think that today, though, something like Wolfram Alpha works just as well for that. I do think there's a place for it in education, though.
This is not how students are taught to use calculators. I agree with you though; Maple, Mathematica, or (say) Python is much better at this than any graphing calculator.
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)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.
Secondly, what's "bullshit" about the proofs of "geometry" courses? And why do you put "geometry" in quotes?
Always requiring proofs in elementary and middle school is inappropriate for many reasons. I'll give a few. There's hardly sufficient time to demonstrate and exercise the mathematics as it is. Secondly, learning to do proofs properly are important only for those who will become academic mathematicians at universities.
The demonstration of proof in geometry class is both elegant, precise and appropriate.
Learning how to motivate and explain mathematical relationships and structures is essential for anyone who plans to work with them later (or frankly anyone who plans to be an informed citizen). Without a demonstration of such ability to explain on students’ part, I doubt that any “mathematics” has in fact been learned.
Normal 14-year-olds are plenty capable of understanding the construction of straightforward mathematical arguments.
> demonstration of proof in geometry class is both elegant, precise and appropriate.
You show me a widely used high school geometry book that isn’t completely full of time wasting banality and pointless over-strict over-regimented rules for students to follow, and I’ll be amazed.
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.
Every college STEM major, however, should know how to use it. It is an incredibly powerful tool.
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.