Re: [Edu-sig] Radical Math: debugging help?
On Mon, Apr 12, 2010 at 9:16 PM, kirby urner wrote: << snip >> OK, a couple replies to this one: > (a) I found the bug: I'd neglected to subclass 'object' as my root object, > so was not getting new-style classes, just classic classes -- we still > have that distinction in 2.6. I was also mistakenly passing 'self' as a first parameter to super(Type, self).__init__. > (b) I made numerous enhancements for this new improved deluxe > edition, appended herewith: > Here's the output you get if you run it as is, except the alignment here is messed up (not a fixed width font for me here): Volumes Table = Tetrahedron (edge = 1) 1 Cube (any face diagonal = 1) 3 Octahedron (any edge = 1) 4 Rhombic Triacontahedron (any long face diagonal = 0.6177) 5 Rhombic Dodecahedron (any long face diagonal = 1) 6 Rhombic Triacontahedron (any long face diagonal = 0.7071) 7.5 Pentagonal Dodecahedron (any edge = 0.618) 15.35 Icosahedron (any edge = 1) 18.51 Cuboctahedron (any edge = 1) 20 Duals Table == Tetrahedron* Tetrahedron Cube* Octahedron Octahedron* Cube Rhombic Dodecahedron Cuboctahedron Rhombic Triacontahedron Icosidodecahedron Pentagonal Dodecahedron* Icosahedron Icosahedron* Pentagonal Dodecahedron Cuboctahedron Rhombic Dodecahedron * = Platonic > def scale(self, scalefactor): > edge = self.edge * scalefactor # edge unbound to self > volume = self.volume * pow(scalefactor, 3) # likewise volume > # print("DEBUG: a star is born: a new %s" % self.__class__.__name__) > return self.__class__(edge = edge, edge_name = self.edge_name, > volume = volume, greekname = self.greekname) Found a bug already: the scale method had yet to pass on its full complement of parameters when giving birth to a scaled version of itself. Here's what I changed it to: def scale(self, scalefactor): edge = self.edge * scalefactor # edge unbound to self volume = self.volume * pow(scalefactor, 3) # likewise volume # print("DEBUG: a star is born: a new %s" % self.__class__.__name__) return self.__class__(*(edge, self.edge_name, volume, self.greekname, self.platonic, self.dual)) Testing (old code): >>> t = Tetra() >>> t.dual 'Tetrahedron' >>> t.volume 1 >>> newt = t.volume * 3 >>> newt.dual Traceback (most recent call last): File "", line 1, in newt.dual AttributeError: 'int' object has no attribute 'dual' >>> newt.platonic Traceback (most recent call last): File "", line 1, in newt.platonic AttributeError: 'int' object has no attribute 'platonic' Testing (new code): >>> reload(ch) >>> t = Tetra() >>> t = 3 * t >>> t.volume 27 >>> t.dual 'Tetrahedron' >>> t.platonic True >>> c = Cube() >>> c = c * 3 >>> c.volume 81 >>> c.platonic True >>> d = ch.R_Dodeca() >>> d.platonic False >>> e = d * 5 >>> e.volume 750 >>> e.platonic False >>> e.dual 'Cuboctahedron' ___ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
Re: [Edu-sig] Radical Math: debugging help?
On Sat, Apr 10, 2010 at 4:41 PM, kirby urner wrote: > Below is current source for ch.py, a module for exploring volume > relationships starting with a "ground state" (a default) known as the > concentric hierarchy of polyhedra. OK, a couple replies to this one: (a) I found the bug: I'd neglected to subclass 'object' as my root object, so was not getting new-style classes, just classic classes -- we still have that distinction in 2.6. (b) I made numerous enhancements for this new improved deluxe edition, appended herewith: """ Radical Math, Portland, Oregon (April, 2010) A reading and Python module (GPL, 4Dsolutions.net) """ from math import sqrt as radical phi = (1 + radical(5))/2 class Poly( object): def __init__(self, edge = 1, edge_name = "edge", volume = 1, greekname = "Tetrahedron", platonic = True, dual = "Tetrahedron"): self.edge = edge self.edge_name = edge_name self.volume = volume self.greekname = greekname self.platonic = platonic self.dual = dual def scale(self, scalefactor): edge = self.edge * scalefactor # edge unbound to self volume = self.volume * pow(scalefactor, 3) # likewise volume # print("DEBUG: a star is born: a new %s" % self.__class__.__name__) return self.__class__(edge = edge, edge_name = self.edge_name, volume = volume, greekname = self.greekname) __mul__ = __rmul__ = scale # e.g. tetra = tetra * 3 def __repr__(self): return "Polyhedron of type %s (vol: %s)" % (self.greekname, self.volume) class Tetra( Poly ): pass class Cube( Poly ): def __init__(self, edge = 1, edge_name = "any face diagonal", volume = 3, greekname = "Cube", platonic=True, dual="Octahedron"): super(Cube, self).__init__(*(edge, edge_name, volume, greekname, platonic, dual)) class Octa( Poly ): def __init__(self, edge = 1, edge_name = "any edge", volume = 4, greekname = "Octahedron", platonic=True, dual="Cube"): super(Octa, self).__init__(*(edge, edge_name, volume, greekname, platonic, dual)) class R_Dodeca( Poly ): def __init__(self, edge = 1, edge_name = "any long face diagonal", volume = 6, greekname = "Rhombic Dodecahedron", platonic=False, dual="Cuboctahedron"): super(R_Dodeca, self).__init__(*(edge, edge_name, volume, greekname, platonic, dual)) class R_Triac( Poly ): def __init__(self, edge = radical(2)/2, edge_name = "any long face diagonal", volume = 7.5, greekname = "Rhombic Triacontahedron", platonic=False, dual="Icosidodecahedron"): super(R_Triac, self).__init__(*(edge, edge_name, volume, greekname, platonic, dual)) class Icosa ( Poly ): def __init__(self, edge = 1.0, edge_name = "any edge", volume = 5 * phi**2 * radical(2), greekname = "Icosahedron", platonic=True, dual="Pentagonal Dodecahedron"): super(Icosa, self).__init__(*(edge, edge_name, volume, greekname, platonic, dual)) class P_Dodeca ( Poly ): def __init__(self, edge = 1/phi, edge_name = "any edge", volume = (phi**2 + 1) * 3 * radical(2), greekname = "Pentagonal Dodecahedron", platonic=True, dual="Icosahedron"): super(P_Dodeca, self).__init__(*(edge, edge_name, volume, greekname, platonic, dual)) class Cubocta ( Poly ): def __init__(self, edge = 1, edge_name = "any edge", volume = 20, greekname = "Cuboctahedron", platonic=False, dual = "Rhombic Dodecahedron"): super(Cubocta, self).__init__(*(edge, edge_name, volume, greekname, platonic, dual)) def test1(): c = Cube() print "First shape: %s" % c print "Dual: %s Platonic: %s" % (c.dual, c.platonic) d = P_Dodeca() print "Second shape: %s" % d print "Dual: %s Platonic: %s" % (d.dual, d.platonic) def test2(): print "\n\nVolumes Table\n=" for shape in (Tetra(), Cube(), Octa(), R_Triac()*pow(2./3,1./3), R_Dodeca(), R_Triac(), P_Dodeca(), Icosa(), Cubocta()): poly = "{0} ({1} = {2:.4g})".format(shape.greekname, shape.edge_name, shape.edge) print "{0:<60}{1:>8.4g}".format(poly, shape.volume) def test3(): print "\n\nDuals Table\n==" for shape in (Tetra(), Cube(), Octa(), R_Dodeca(), R_Triac(), P_Dodeca(), Icosa(), Cubocta()): print "{0:<30}{1}".format(shape.greekname+" *"[int(shape.platonic)], shape.dual) print "\n * = Platonic" if __name__ == "__main__": print """ Silicon Foresters, aided by committed allies from the USA and elsewhere, battled the tyranny of an over-specialized majority unwilling to share important heritage. Our hero, Medal of Freedom winner and premier architect of his age, had contributed some valuable pedagogical and an
Re: [Edu-sig] [ANNC] pynguin-0.7 (python turtle graphics application)
>> http://pynguin.googlecode.com/ > > Lee, are you familiar with the Turtle Art activity in Sugar for the > OLPC XO, also written in Python? I had not seen it before. I've used one of these "block" interfaces before with Lego Mindstorms and found it confusing. The TA one looks better though, since I can see right away that it's pretty easy to create new functions and call them. I never did see a way to do that with Mindstorms. I did not look very hard though. Maybe I've just been writing code for so long that I can't see the advantage of blocks over text anymore > It provides blocks for integrating > Python code. You might want to talk to Walter Bender of Sugar Labs > about his plans for expanding TA, some of which match yours. I guess I'm not sure how far the whole turtle thing can go. I really just wanted a single-window, real Python, system where my students could get their feet wet with variables, loops, and conditionals. So I made pynguin. It works pretty well for what I wanted. > I have been thinking about how to integrate all of this into a > curriculum where we would apply turtle graphics to many subjects > starting in first grade or perhaps earlier, and later teach > programming and Computer Science within this environment rather than > purely as text. I don't work with anyone that young. I don't know if they just are not interested in the text interface or if it is beyond their abilities. For me, programming is text. Though I do like syntax highlighting :o) _ Hotmail: Free, trusted and rich email service. https://signup.live.com/signup.aspx?id=60969 ___ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
Re: [Edu-sig] [ANNC] pynguin-0.7 (python turtle graphics application)
>> Pynguin is a python-based turtle graphics application. >> It combines an editor, interactive interpreter, and >> graphics display area. >> > > I like the idea of using turtles to plot graphs. Replacing graphing > calculators with Python is easier when there are simple plot functions > available (yes, I know about matplotlib, Sage...) It works pretty well for simple things. More of a test of what's possible than something especially useful. I tend to use kmplot or kalgebra when I see kids struggling with their graphing calculators. I think graphing calculators are pretty lame. kmplot and kalgebra are pretty awesome: http://edu.kde.org/kmplot/ http://edu.kde.org/kalgebra/ > Curious how much of the Standard Library turtle model gets used here. I don't import turtle.py if that's what you mean. > Is the turtle stuff all rewritten from scratch. I looked at turtle.py when starting out, but even though it says pretty clearly: """ From here up to line : Tkinter - Interface for turtle.py May be replaced by an interface to some different graphics toolkit """ I wasn't sure I could get it to behave the way I wanted. I did look at it for some API ideas. It would be cool if scripts written for turtle.py could run unchanged in pynguin. Maybe I will go through and add compatibility functions for things where I chose different names for the APIs. _ Hotmail: Trusted email with Microsoft’s powerful SPAM protection. https://signup.live.com/signup.aspx?id=60969 ___ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
Re: [Edu-sig] Why Python?
On Mon, Apr 12, 2010 at 12:36 AM, kirby urner wrote: << SNIP >> > How about scholarships for veterans to enter nursing, other medical > professions? > > The health professions are ravenous for computing and data > services. > > My daughter is the Portland district champion debater at 15, > having started her high school's team in the first place. I worry > though: why waste her talents at some backward academy > that doesn't even teach about tetrahedral mensuration? How > many dead mineshaft canaries does it take I wonder? > > Maybe by the time she graduates we'll have some respectable > colleges out there. > Of course the above won't make a whole lot of sense if you're just tuning in, as what means "tetrahedral mensuration" and why should any respectable college -- such as Earlham in Indiana (the topic of a cell phone conversation from the Pauling House this morning) -- include that on a syllabus? The following three posts may provide some elucidation, plus they are using Python (the 1st shows execution, the 2nd shows source code) and so are especially apropos on edu-sig: http://groups.yahoo.com/group/synergeo/message/58259 http://groups.yahoo.com/group/synergeo/message/58260 http://groups.yahoo.com/group/synergeo/message/58262 Basically I'm using the Decimal type to give the flavor of some extended precision "arithmetic" regarding some basic polyhedral relationships. As some of you know, our subculture (ethnicity) has a unit volume tetrahedron, per this TV segment outline (more storyboarding for CSN): http://coffeeshopsnet.blogspot.com/2010/04/smart-bar-lcds.html Also here: http://groups.google.com/group/mathfuture/browse_thread/thread/4aa4b568e87ba90b?hl=en A problem with the Synergeo archive, however, is it doesn't support significant whitespace, whereas this Mailman archive does, making it much better for sharing actual source code. Therefore I am taking the liberty of reposting that here: #= import decimal from decimal import Decimal import re print """ I will now give you the radius of a rhombic triacontahedron of volume five, computing in tetra- volumes. """ myothercontext = decimal.Context(prec=100, rounding=decimal.ROUND_HALF_DOWN) decimal.setcontext(myothercontext) print decimal.getcontext() # long limo vip numbers one = Decimal('1.') two = Decimal('2.') three = Decimal('3.') five = Decimal('5.') print "Five: %s" % five radical2 = two.sqrt() radical3 = three.sqrt() radical5 = five.sqrt() print "2nd root of 2: %s" % radical2 phi = (one + radical5) / two print "Phi: %s" % phi scalefactor = (two/three) ** (one/three) print "Shrink by: %s" % scalefactor print "Radius: %s" % ((phi / radical2) * scalefactor, ) """ phi to a 100K places (potentially, check this resource: http://goldennumber.net/PhiTo10Places.txt ) """ phi_million = "1.618033988749894848204586834365638117720309179805762862135448..." # add more digits for a match strphi = str(phi) results = re.match(strphi, phi_million) if results: print "Successful match for phi value: %s" % (results.span(), ) # (( ),) returns tuple as single %s else: print "No match with phi_million" #= Kirby ___ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
Re: [Edu-sig] mathematics and language
Hi all, thanks for your reactions. Just wanted to clarify a bit, although most of you seemed to have understood me quite well. Sorry, I don't know J (Kirby does), but this is exactly the reason I prefer Python. Readability counts (for me). Of course this was a bit offensive, telling someone who is really in love with something (in this case J) that you're not that interested. Gives rise to some hard feeling. Every teacher experiences this. I work as a teacher - I know how it feels, when students don't share your own enthusiasm. And they never semm to have good reasons ;-), just "feelings". Every teacher knows these questions: Oh, why do we have to learn this? I will never need this. What will we do next? When will we start with something different? Real students tend to ask these questions, communicating: "This is hard stuff, I have other things on my mind I consider more important...". And now sometimes I find myself in a similar position; although I consider myself a person who is constantly learning new things. But my time is limited and I can choose my interests now. When I studied physics in university (got a diploma in physics, 5 years of study) I had chosen a subject with lots of maths (mostly together with the mathematicians), I really liked it. I like maths. But that level is esoteric for most other peaople and more scary: most of it is far away and esoteric stuff for me now, too. Last week because I needed some space in my workplace I stacked away lots of university textbooks. In over ten years as a high-school teacher I never needed most of them, especially the highly mathematical texts. It was kind of sad, but I said farewell to them as I realized I would probably never in my life use them anymore. (I kept Feynman lectures though.) This turns out not to be the case. The complete syntax table for J consists of 12 lines. You are talking glibly about a topic on which you have no information. Thats how it is. I can't be an knowledgable in everything. So many things I can just talk about as an outsider. In the past years I have taught myself Python, Java and Smalltalk in my free time together with OO-thinking, Linux,... . I have also looked into Scheme/Lisp a bit. Smalltalk was the most interesting experience, the famous "syntax table on a postcard". But while Python is a tool I actually use, Smalltalk was considerably harder to get to grips with. In school we use Java (with BlueJ) in the upper classes. For my personal bio I decided to switch interests away from programming for a while. And without a lesson? Do you believe that Python syntax is intuitive, and can be guessed without a manual or lessons? In i., the i stands for index. It is easy to learn, and reasonably mnemonic. No, nothing is intuitive when you start from scratch. I can understand people who don't (want to?) learn Python, although I would always say it is useful and looks easy for me. But I had to invest there too. % x is reciprocal of x, so o. % 180 is pi/180 Don't think that is very useful. I meant: if I have a division operator then I don't have to learn about another special symbol for the reciprocal. These objections are trivial and uninformed. You aren't a mathematician, you don't like math and math notation, so there is nothing more to say, except please stand out of the way of people who can benefit from it and want it. I don't stand in your way. Go ahead. But I like math, believe it or not ;-). Lost you there... I put this in in remembrance of the late Arthur Siegel. Hope he doesn't mind... But he could have posted this. LOL. Math notation is what mathematicians use, not schoolchildren. They are constantly inventing more of it. What you call math notation is known to mathematicians as "arithmetic". There is no standard math notation. Every mathematician (person who creates maths) is free to invent the symbols he finds useful. Still: I often think of mathematics as a language, at least as hard to learn as latin. You can use it to think (communicate with yourself) or to express your ideas in the most clear way for others to follow the reasoning. Over the years some symbols have proven to be more useful than others (think of d/dx Leibniz versus Newton). Some symbols are just handy because they are more or less universally agreed upon (like the indo-arabic numerals, function names sin(), mathematical constants e, pi, ...). For starting to learn maths I have to teach pupils the most common vocabulary, and the correct way to express yourself. For instance: An expression carries no meaning if it doesn't contain a =, <, > or !=. High-schoolers tend to forget that and write only one side of an equation -p/2 +- sqrt((p/2)**2-q) when they actually want to solve a quadratic equation. I have to correct this, because it is like a sentence without a verb. Mathematics as a language is more than just the vocabulary. Mathematician
Re: [Edu-sig] Why Python?
On Mon, Apr 12, 2010 at 09:30:50AM -0700, David MacQuigg wrote: >> We consider pseudocode "self-explanatory" to those who already know >> the syntax of a similar language. But it is not so, any more than >> mousing and icons is "intuitive" for those who have never seen them. That is emminently reasonable but I'm not sure it is true. My children seemed to pick up using a mouse without any instruction IIRC. Geometry, motion & pictures seem to tap a very primitive part of our brains...much deeper than the symbology of algebra and pseudocode. I wonder if there are methods of communication that don't need much explanation because that is how are brains are naturally wired. > It's interesting to speculate whether there > will ever be another major improvement in programming, a step beyond > Python, or if Python will simply incorporate any good ideas that come > along (as it did with our @ syntax). I would bet on the latter. Well that is exciting for me as I know Python and don't want to learn a new language every 3 months. cs ___ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
Re: [Edu-sig] Why Python?
Edward Cherlin wrote: On Sun, Apr 11, 2010 at 21:03, Andrew Harrington wrote: My choices are always about me and a particular situation. I would not teach J to beginners I would use the +-*% (+-×÷) subset of J in first grade for arithmetic, alongside Turtle Art (with stack tiles), and Etoys, including Scratch. By third grade, we could introduce programming in J/APL, Logo/LISP, FORTH, Python, and Smalltalk. At some point, we could show how each represents the same internal parse tree in quite different textual forms. What the LISPers call "syntactic sugar". This is a fundamental Computer Science concept. or to people not crunching a lot of mathematical stuff regularly, but for the professional statisticians and electronic traders I know, J is a fabulous language, and very worth the modest learning curve. J would enable children to crunch data sets easily, allowing a radical deepening of every subject. The learning curve would be very modest when integrated with arithmetic and elementary science, and applied to languages, history, geography, health, and gym. David MacQuigg wrote: Edward Cherlin wrote: Christian Mascher wrote: Edward Cherlin wrote: [sigh] Do math tables in a math array language. degrees =. i. 91 NB. 0..90 radians =. degrees * o. % 180 table =. |: degrees, 1 2 3 o./ radians Python is much nearer to standard Math-notation, that is a good thing. LOL. Math notation is what mathematicians use, not schoolchildren. They are constantly inventing more of it. What you call math notation is known to mathematicians as "arithmetic". There is no standard math notation. I think what Christian means to say is that Python is much nearer to a notation (pseudocode) that might be used by scientists and engineers who are trying to express an idea involving computation, without relying on a specific language. Of course, there is no "standard" pseudocode, but if you look at textbooks that are most successful at expressing algorithms this way (my examples would be from engineering - Hachtel & Somenzi on Logic Synthesis, Stinson on Cryptography) what you see is a notation very close to Python. Pseudocode has to be self-explanatory. There is no introductory chapter on how to read it. We consider pseudocode "self-explanatory" to those who already know the syntax of a similar language. But it is not so, any more than mousing and icons is "intuitive" for those who have never seen them. I consider my J example _with explanatory comments_ to be simpler than the Python I was starting from, where it must be assumed that students have had a prior introduction to the syntax. You may have a good point here. The C family of languages (C, Java, Python, ... ) has so permeated our culture that we now have a bias to that way of thinking, and difficulty understanding languages from the APL family (APL, J, K). I don't see any signs that the world is moving to APL-think, LISP-think, or any other programming paradigm, so if students are introduced to programming in some other style, there will be a problem in transition to C-think, a much bigger leap than moving from Python to Java. There must be a real, demonstrable benefit to an alternative paradigm, or it isn't worth the added effort of learning two. Note: I am talking about the majority of students, not those truly interested in CS, for whom learning the alternatives is a great benefit. Personally, I love exploring alternatives, and have even participated in an attempt to one-up Python (Prothon). It's interesting to speculate whether there will ever be another major improvement in programming, a step beyond Python, or if Python will simply incorporate any good ideas that come along (as it did with our @ syntax). I would bet on the latter. Likewise, an introductory computer language should be close to self-explanatory. It will be difficult to get math and science teachers to accept it, if they have to make extra efforts explaining the notation. Getting math and science teachers to accept computation as a vital part of their curricula is my current focus, so I wouldn't try to push something like your example above. There are a number of math, science, and Computer Science textbooks in which APL or J is the math notation throughout, being taught only as needed without interrupting the main sequence of ideas. I can give you citations. There is very little done in this manner in any other programming language. (If you have seen some, please send me the information.) I much prefer this approach to the usual one of teaching programming language syntax and semantics in a vacuum, with no systematic application to anything. I agree that the earliest introduction to programming should be in math and science classes, without interrupting the main sequence of ideas, or forcing any more programming than is helpf
Re: [Edu-sig] Why Python?
On Mon, Apr 12, 2010 at 1:36 AM, kirby urner wrote: > > "Math is an outdoor sport" is one of our slogans. > > I've heard that referred to as a "mathlete". ___ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
Re: [Edu-sig] Why Python?
On Apr 11, 2010, at 22:15 , ch...@seberino.org wrote: Ever heard of Teach Scheme/Reach Java (http://http://www.teach-scheme.org)? I like the idea of starting the AP CS year with a clean language and then "reaching" or finishing with Java. I wonder if AP CS with Python and Java would be ideal. I'd prefer Teach Python/Reach Python. ;) bb -- Brian Blais bbl...@bryant.edu http://web.bryant.edu/~bblais http://bblais.blogspot.com/ ___ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
Re: [Edu-sig] Why Python?
On Sun, Apr 11, 2010 at 7:51 PM, Edward Cherlin wrote: > On Sun, Apr 11, 2010 at 21:03, Andrew Harrington wrote: >> Well put David. >> >> My choices are always about me and a particular situation. I would not >> teach J to beginners > > I would use the +-*% (+-×÷) subset of J in first grade for arithmetic, > alongside Turtle Art (with stack tiles), and Etoys, including > Scratch. By third grade, we could introduce programming in J/APL, > Logo/LISP, FORTH, Python, and Smalltalk. At some point, we could show > how each represents the same internal parse tree in quite different > textual forms. What the LISPers call "syntactic sugar". This is a > fundamental Computer Science concept. > I'd like to see a school form around your druthers, with ways to facilitate turnover, so those most advantaged by this approach would have some chance to (a) discover this for themselves and (b) keep a slot in an initially rare environment. One would hope we might learn enough from your approach to transfer some of what's working to other sites. Your school of thought would spread in proportion to its achieving results, but without this stultifying demand that everything be proven risk-free before any pilots get started (as if the status quo were a result of such iron-clad assurances). A vicious circle: don't try anything until you can prove it's not in error. This results in paralysis, in nothing being tried. Nothing ventured, nothing gained -- we've all heard that a million times. Hey, I'd've provided you with space and a budget years ago. We'd be reading of your stellar results in the electronic papers by now! All that being said, I'd also sponsor other schools with quite different approaches. Television programming is even more powerful than computer programming in a lot of ways, as it feeds directly into the optic nerve thereby filling human memory banks, helping condition responses. What a powerful medium! Some schools need to put more focus on TV skills, lest all the effective recruiting commercials be for competing services. Maybe the math curriculum includes some J, but with a starry sky backdrop, with class content projected to a sheet strung between tree trunks (or is the sheet itself some kind of LCD?). You had to hike 20 miles to get here. A lot of the databases you study are about local flora and fauna. Some kind of boarding school? International students? Public? Federally funded? Lets fight early onset diabetes by ending discrimination against physical activity as intrinsically "non-mathematical". "Math is an outdoor sport" is one of our slogans. >> or to people not crunching a lot of mathematical stuff >> regularly, but for the professional statisticians and electronic traders I >> know, J is a fabulous language, and very worth the modest learning curve. > > J would enable children to crunch data sets easily, allowing a radical > deepening of every subject. The learning curve would be very modest > when integrated with arithmetic and elementary science, and applied to > languages, history, geography, health, and gym. > Glad you mentioned health and gym. Doing the math around joules and calories, relating these to food values (content): lots of crunchy data sets to work with, as you say, lots of working out. The chemistry of food, digestion, and nutrition, includes cooking, learning to cook. Where those TV-making skills come in handy: producing cooking shows for the school servers. Using Python for a graphing calculator in math class need to not be special, extraordinary, honors or advanced. It's just the obvious and everyday thing we should be doing already. Besides, maybe we're not going to college right away? Other services calling, and offering their own training? Given how FUBAR the Global U is right now, one could understand why creating high debt for high tuitions simply to further over-specialize our students might be considered counter-productive. How about scholarships for veterans to enter nursing, other medical professions? The health professions are ravenous for computing and data services. My daughter is the Portland district champion debater at 15, having started her high school's team in the first place. I worry though: why waste her talents at some backward academy that doesn't even teach about tetrahedral mensuration? How many dead mineshaft canaries does it take I wonder? Maybe by the time she graduates we'll have some respectable colleges out there. >> J is an interesting case. Iverson did not totally open up the source. > > There is a published version of the source for an earlier version of > J, without the IDE, graphics, and so on. I have a copy. There has been > some talk of creating a Free Software version, but no activity that I > know of. However, Iverson's son Eric is considering GPLing some > version of J in support of One Laptop Per Child and Sugar Labs. I need > to bother him about it again, because I am about to apply for two XO > 1.5