Thursday, May 08, 2008

Propagating Gnu Math

[ republished from a StudyPack forum ]

In my recent talk in Chicago at the Python conference (Pycon 2008), I took the line that Python might be useful in place of a calculator in what today we call "high school math class" (and we might keep calling it that).

In other words, I bill my Saturday Academy class as Pythonic Math (a kind of subtitle), not as an introduction to Computer Science (although it is also that in some ways).

Per A Mathematician's Lament, the K-12 math pipeline is widely regarded as broken anyway, even by insiders, so that makes it fair game for overhaul and replacement, by such as our Silicon Forest people, as we don't like to waste students' valuable bandwidth.

Of course realistically we don't try to take over the schools, simply offer content through the Internet, to elite academies willing to experiment and so on. Compliance is voluntary, we are not Borg-like (though some call us viral -- a common complaint about open source strategies that leverage network effects).

Primary math objects we care about are such as:
  • primitive number types and strings
  • collections like sets
  • integers modulo N
  • rational numbers (Q) -- with sets N, Z, Q, R, C
  • linear functions
  • polynomials
  • 2D & 3D plots
  • fractals and cellular automata
  • trig functions and relations
  • vectors (and edges)
  • polyhedra (tetrahedron most primitive).
Lots of stats, calculus, chemistry, biology applications for computer language treatment so the idea is once you've got a language, it will follow you around perhaps on your laptop.

However I'm not saying every course exploring this curriculum plods through all of these topics in sequence. Nor do I insist all teachers use Python, as I'm in no position to insist, am just another "gnu math" teacher (I am quite inventive though, so a lot of my collaborators and co-conspirators copy my ideas, as I copy theirs). I also don't only use Python (I've been known to use J for example). Spreadsheets are not forbidden (smile).

Regarding I/O and piping in remarks by Atanas, I am in agreement and especially extol the latter (piping) as relevant in my Chicago talk, using for my example the wonderfully pipe-worthy utilities at the Antiprism site, the work of Adrian Rossiter. For our segments on polyhedra (using POV-Ray, VPython and so on), his stash of open source C++ tools, runnable on multiple platforms, are stellar. When it comes to I/O, I think it's realistic to have objects be heavy equipment sometimes.