Re: [Edu-sig] Radical Math: debugging help?

2010-04-12 Thread kirby urner
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?

2010-04-12 Thread kirby urner
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)

2010-04-12 Thread Lee Harr

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

2010-04-12 Thread Lee Harr

>> 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?

2010-04-12 Thread kirby urner
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

2010-04-12 Thread Christian Mascher

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?

2010-04-12 Thread chris
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?

2010-04-12 Thread David MacQuigg

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?

2010-04-12 Thread Charles Cossé
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?

2010-04-12 Thread Brian Blais

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?

2010-04-12 Thread kirby urner
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