23 comments

[ 2.9 ms ] story [ 70.3 ms ] thread
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.

I'm not so sure that banning calculators would have the desired effect. Teaching calculator skills in tandem with other methods of problem solving seems to accomplish both teaching the subject matter and teaching the important skill of computer (calculator) use. Most students, even engineers, won't ever be required to solve problems without a calculator or computers, so ensuring they are fluent in the processes and syntax of computer based computation seems like an important life skill for future generations. As long as the curriculum is designed in a way to emphasize correct process and not just correct answers and "showing your work" is required to get the "right" answer, I think we can avoid the sort of narrowly focused, rote repetition of keystrokes that most people are afraid a calculator culture engenders.
While I agree that being able to press forward into abstraction is more valuable than trying different permutations of the same problem, I do think the calculator (or at least a function it serves) has some use.

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.

> it lets you, when first introduced to a topic, play around with it

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.

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)
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.

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.
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.
Did Russian elementary and middle schools indeed require that students "do real proofs (and not the bullshit proofs of “geometry” courses)"? If so, what was the failure rate of students?

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 to do proofs properly are important only for those who will become academic mathematicians at universities.

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.

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.

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.

"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.
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.

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.

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

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.
In an intro linear algebra class, I think a 6x6 determinant is legit. I asked one on my midterm. It was actually a very easy problem since the matrix was about 2 row reductions steps away from being upper triangular.

Unless the professor is evil, "compute this 6x6 determinant" is really asking "do you know the properties of determinants which will simplify this problem?"

My point was not to say that familiarity with the determinant formula was worthless.

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 also find this a sensitive subject.

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.

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.

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.