

In our 'more motivated' Alg 2 classes we use Paul Foerster's Algebra Trigonometry text. I really like what he does, but it's clearly from another age. He integrates programming into the curriculum, but it's all in BASIC. Following is something I sent to my dept chair and colleagues that teach the same course. So far, no responses.
Important point  they don't even pay any attention to these problems that involve BASIC. They just ignore them. However, I find it interesting that this is the text they consider the best for our 'more motivated' students. It has really been fascinating looking at what Foerster did regarding the integration of programming into the curriculum. So many of his examples could be written as oneliners in Python.
Last night was 'Back to School Night'. That's when we put on a little 10minute show about our course. I attempted to explain to parents how computational thinking is changing how science thinks about the physical world, how this is creating brand new interdisciplinary majors like computational biology, how CS is the new mathematics, that this Python stuff is not something on top of the Algebra, it IS Algebra.
Lots of great response. That was good. Definitely some got it. But it's still so weird juggling world views. ================================================ Problem 32, pg. 92: Write a program to
find the equation of a line between two points. The input should be
the two coordinates of the two points. The output should be the
equation in slopeintercept form. The program should be able to handle
cases where the slope is either zero or infinite.
Here's Foerster's suggested solution in BASIC. I'm sure you can understand it. Any competent math teacher should: 10 INPUT "TYPE X1, Y1"; X1, Y1 15 INPUT "TYPE X2, Y2"; X2, Y2
20 RI = Y2  Y1 25 RU = X2  X1 30 IF RI = 0 THEN 60 35 IF RU = 0 THEN 70 40 M = RI / RU 45 B = Y1  M*X1 50 PRINT "Y = ";M;"X + ";B 55 GOTO 75 60 PRINT "Y = "; Y1
65 GOTO 75 70 PRINT "X = "; X1 75 END Wow, that sure is old! : ) Here's the same solution in Python: x0, y0 = input('Enter x0, y0 >') x1, y1 = input('Enter x1, y1 >')
rise = y1  y0 run = x1  x0 if rise == 0: print 'y =', y0
elif run == 0: print 'x =', x0 else: m = rise/run b = y0  m*x0 print 'y =', m, 'x +', b
You
can see the same logic, but it's a bit shorter. That's because there's
no use of GOTO. The elimination of GOTO was one of the important
features in the development of PASCAL, and ever since those days GOTO
has been considered bad style. It produces crazy and cumbersome code.
Functional organization is far superior. You
can see that the Python version is just as easy to read, or easier,
than the BASIC. So, you can use Python in this simple procedural sort
of way. However, Python supports various paradigms, so you can also organize things
functionally:
def slope_intercept(A, B): x0, y0 = A x1, y1 = B rise, run = y1  y0, x1  x0 if run == 0: return None, x0 m = rise/run; b = y0  m*x0 return m, b And
even here, the code is longer than it needs to be. You can cut it down to:
def slope_intercept(A, B):
rise, run = A[1]  B[1], A[0]  B[0]
if run == 0: return None, A[0]
return rise/run, A[1]  rise/run*A[0] And you can even cut it down more, but that's not the point. This
accomplishes the same thing as the original, just without printing the
equations. You would then call this function to obtain the values of m
and b for printing, if that's what you wanted to do, or, you could
chain this function together with other functions to construct
something more complex. It's what functional analysis is all about.
You consider
I/O stuff decoration. It's not the important part mathematically
speaking.
Functional decomposition of tasks > sure sounds like Analysis to me! : ) Isn't it essentially the same kind of thinking?
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


2008/10/3 michel paul < [hidden email]>:
[SNIP]
>
> Here's the same solution in Python:
>
> x0, y0 = input('Enter x0, y0 >')
> x1, y1 = input('Enter x1, y1 >')
> rise = y1  y0
> run = x1  x0
> if rise == 0: print 'y =', y0
> elif run == 0: print 'x =', x0
> else:
> m = rise/run
> b = y0  m*x0
> print 'y =', m, 'x +', b
>
I find that this (and even more so for the other solutions below) not
as readable as it should be. For me, if/elif/else really gain from
being indented, and blank lines can also add to divide the program
into "functional unit". So I would write instead:
x0, y0 = input('Enter x0, y0 > ')
x1, y1 = input('Enter x1, y1 > ')
rise = y1  y0
run = x1  x0
if rise == 0:
print 'y =', y0
elif run == 0:
print 'x =', x0
else:
m = float(rise)/run # avoid dividing two integers ...
b = y0  m*x0
print "y = %f x + %f" % (m, b)
with perhaps some thoughts given to having a set number of decimal
places for the floats.
Just a thought...
André
> You can see the same logic, but it's a bit shorter. That's because there's
> no use of GOTO. The elimination of GOTO was one of the important features
> in the development of PASCAL, and ever since those days GOTO has been
> considered bad style. It produces crazy and cumbersome code. Functional
> organization is far superior.
>
> You can see that the Python version is just as easy to read, or easier, than
> the BASIC. So, you can use Python in this simple procedural sort of way.
> However, Python supports various paradigms, so you can also organize things
> functionally:
>
> def slope_intercept(A, B):
> x0, y0 = A
> x1, y1 = B
> rise, run = y1  y0, x1  x0
> if run == 0: return None, x0
> m = rise/run; b = y0  m*x0
> return m, b
>
> And even here, the code is longer than it needs to be. You can cut it down
> to:
>
> def slope_intercept(A, B):
> rise, run = A[1]  B[1], A[0]  B[0]
> if run == 0: return None, A[0]
> return rise/run, A[1]  rise/run*A[0]
>
> And you can even cut it down more, but that's not the point.
>
> This accomplishes the same thing as the original, just without printing the
> equations. You would then call this function to obtain the values of m and
> b for printing, if that's what you wanted to do, or, you could chain this
> function together with other functions to construct something more complex.
> It's what functional analysis is all about. You consider I/O stuff
> decoration. It's not the important part mathematically speaking.
>
> Functional decomposition of tasks > sure sounds like Analysis to me! :
> ) Isn't it essentially the same kind of thinking?
> _______________________________________________
> Edusig mailing list
> [hidden email]
> http://mail.python.org/mailman/listinfo/edusig>
>
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


On Oct 3, 2008, at 9:22 PM, michel paul wrote:
> ever since those days GOTO has been considered bad style. It
> produces crazy and cumbersome code.
(This generalization is patently incorrect. *Bad* use of GOTO tends to
create more spectacular problems in code organization than bad use of
a number of other language features, which is why GOTO has earned its
reputation. When used correctly, goto is almost a necessity for clean,
understandable code in the face of certain flow complexities such as
nested loops or multiple "fail, shared cleanup, return" situations
within the same function.)

Ivan Krstić < [hidden email]>  http://radian.org_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


m = float(rise)/run # avoid dividing two integers ... ... print "y = %f x + %f" % (m, b)
with perhaps some thoughts given to having a set number of decimal
places for the floats.
Certainly, these things makes sense, but given the strange mindset I'm trying to work in, a secondary math
curriculum that is already skeptical about the relevance of programming in
math classes in the first place, worrying about
formatting issues would just further alienate both colleagues and
students. They want things to be as simple as possible,
otherwise, they immediately lose interest. So it's a tricky balance. One detail too much, and it's overload for them. As it is, the float vs. integer division issue will disappear with Python 3K, and I think that will be good for easier integration into math classes.
For math classes I think it's more pertinent to focus on functional interactions and not on IO issues, and that was what I was trying to get at. What I have found fascinating is how similar students and teachers are. You know how math students will ask, "How am I ever gonna USE this?" Well, that's the same response I would initially receive from math colleagues when mentioning Python. In both cases, the questioner seldom really wants an answer, they just want to express their disinterest. But thankfully, this is changing. My colleagues might still not be interested in pursuing it themselves, but at least at this point they realize that it isn't just BS.
On Fri, Oct 3, 2008 at 6:51 PM, Andre Roberge <[hidden email]> wrote:
2008/10/3 michel paul <[hidden email]>:
[SNIP]
>
> Here's the same solution in Python:
>
> x0, y0 = input('Enter x0, y0 >')
> x1, y1 = input('Enter x1, y1 >')
> rise = y1  y0
> run = x1  x0
> if rise == 0: print 'y =', y0
> elif run == 0: print 'x =', x0
> else:
> m = rise/run
> b = y0  m*x0
> print 'y =', m, 'x +', b
>
I find that this (and even more so for the other solutions below) not
as readable as it should be. For me, if/elif/else really gain from
being indented, and blank lines can also add to divide the program
into "functional unit". So I would write instead:
x0, y0 = input('Enter x0, y0 > ')
x1, y1 = input('Enter x1, y1 > ')
rise = y1  y0
run = x1  x0
if rise == 0:
print 'y =', y0
elif run == 0:
print 'x =', x0
else:
m = float(rise)/run # avoid dividing two integers ...
b = y0  m*x0
print "y = %f x + %f" % (m, b)
with perhaps some thoughts given to having a set number of decimal
places for the floats.
Just a thought...
André
> You can see the same logic, but it's a bit shorter. That's because there's
> no use of GOTO. The elimination of GOTO was one of the important features
> in the development of PASCAL, and ever since those days GOTO has been
> considered bad style. It produces crazy and cumbersome code. Functional
> organization is far superior.
>
> You can see that the Python version is just as easy to read, or easier, than
> the BASIC. So, you can use Python in this simple procedural sort of way.
> However, Python supports various paradigms, so you can also organize things
> functionally:
>
> def slope_intercept(A, B):
> x0, y0 = A
> x1, y1 = B
> rise, run = y1  y0, x1  x0
> if run == 0: return None, x0
> m = rise/run; b = y0  m*x0
> return m, b
>
> And even here, the code is longer than it needs to be. You can cut it down
> to:
>
> def slope_intercept(A, B):
> rise, run = A[1]  B[1], A[0]  B[0]
> if run == 0: return None, A[0]
> return rise/run, A[1]  rise/run*A[0]
>
> And you can even cut it down more, but that's not the point.
>
> This accomplishes the same thing as the original, just without printing the
> equations. You would then call this function to obtain the values of m and
> b for printing, if that's what you wanted to do, or, you could chain this
> function together with other functions to construct something more complex.
> It's what functional analysis is all about. You consider I/O stuff
> decoration. It's not the important part mathematically speaking.
>
> Functional decomposition of tasks > sure sounds like Analysis to me! :
> ) Isn't it essentially the same kind of thinking?
> _______________________________________________
> Edusig mailing list
> [hidden email]
> http://mail.python.org/mailman/listinfo/edusig
>
>
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


Thanks, it's good to be clear about these things. I hate perpetuating old myths. I'd say that in the context of secondary math classes a good reason to use GOTO would probably never arise? What I want to do is use programming in these classes in a way that resembles the algebra as much as possible. As far as I can see, pretty much all of the old BASIC things that would appear in math texts using GOTO can be rewritten and made more functional, pun intended.
On Fri, Oct 3, 2008 at 11:30 PM, Ivan Krstić <[hidden email]> wrote:
On Oct 3, 2008, at 9:22 PM, michel paul wrote:
ever since those days GOTO has been considered bad style. It produces crazy and cumbersome code.
(This generalization is patently incorrect. *Bad* use of GOTO tends to create more spectacular problems in code organization than bad use of a number of other language features, which is why GOTO has earned its reputation. When used correctly, goto is almost a necessity for clean, understandable code in the face of certain flow complexities such as nested loops or multiple "fail, shared cleanup, return" situations within the same function.)

Ivan Krstić <[hidden email]>  http://radian.org
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


The best discussion I have seen on the "Phony GOTO Debate", as Steve McConnell calls it, is in his book "Code Complete", 2nd ed. chapter 17 "Unusual Control Structures". Without taking sides, he summarizes the arguments for and against, shows examples of really bad code, examples where GOTO is really beneficial, and a final summary of guidelines for using GOTO.
I would try to avoid the topic with beginning students, but if they have already been using BASIC, and have questions like  Where is the GOTO in Python, then it needs to be discussed in a balanced, nondogmatic way.
This is a forum on education, so it is appropriate to discuss whether and how to present a topic like this, but I hope we don't try to rehash the original debate. I doubt there is anything more to be said beyond what is in McConnell.
At 06:55 AM 10/4/2008 0700, michel paul wrote:
>Thanks, it's good to be clear about these things. I hate perpetuating old myths.
>
>I'd say that in the context of secondary math classes a good reason to use GOTO would probably never arise? What I want to do is use programming in these classes in a way that resembles the algebra as much as possible. As far as I can see, pretty much all of the old BASIC things that would appear in math texts using GOTO can be rewritten and made more functional, pun intended.
>
>On Fri, Oct 3, 2008 at 11:30 PM, Ivan Krstiæ <<mailto: [hidden email]> [hidden email]> wrote:
>>On Oct 3, 2008, at 9:22 PM, michel paul wrote:
>>>ever since those days GOTO has been considered bad style. It produces crazy and cumbersome code.
>>
>>(This generalization is patently incorrect. *Bad* use of GOTO tends to create more spectacular problems in code organization than bad use of a number of other language features, which is why GOTO has earned its reputation. When used correctly, goto is almost a necessity for clean, understandable code in the face of certain flow complexities such as nested loops or multiple "fail, shared cleanup, return" situations within the same function.)
>>
>>
>>Ivan Krstiæ <<mailto: [hidden email]> [hidden email]>  http://radian.org_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


2008/10/4 michel paul <[hidden email]>
For math classes I think it's more pertinent to focus on functional interactions and not on IO issues, and that was what I was trying to get at.
I'm enjoying this thread.
My spin in Pythonic Math has been to suggest "dot notation" become accepted as math notation, and with it the concept of namespaces, which I tell my students is one of the most important mathematical concepts they'll ever learn. We look at how several languages deal with the problem (of name collisions, of disambiguation), including Java's "reverse URL" strategy e.g. net.4dsolutions.mathobjects.vector or whatever.[1]
I tend to look at .py modules as "fish tanks" i.e. ecosystems, with both internal and external (import) dependencies, with the user of said fish tank being somewhat the biologist, in testing to find out what's in there, what the behaviors are.
Starting with the math module is of course apropos, discussing the functions, not shying away from trig even pre high school, no reason to withhold about cosine just because they're "young" (this is actually a prime time to gain exposure to these useful and timetested ideas).
Because of my "fish tank" idea, and using the math module as a model, I don't encourage "self prompting" i.e. using raw_input for much of anything. We need to "feed the fish" directly, i.e. pass arguments directly to functions, with f ( ) looking like a creature with a mouth, ready to eat something. fish( ).
Regarding GOTO, sometime last month I think it was, I told the story of assembler (JMP) and spaghetti code, Djikstra to the rescue, further developments. It's through story telling that we get more of the nuance. I'm a big believer in using this "time dimension" even if not doing anything computer (hard to imagine) i.e. the lives of mathematicians, their historical context, why they did what they did  critical content, not sidebar dispensible, not optional reading.[2]
Metaphor: education systems are like those old Heinlein moving sidewalks (science fiction), where you can't jump on the fastmoving one at the center from zero, have to slide from walk to walk, each one a little faster, and likewise when a approaching a destination, start to slow down.
By including more content from geek world, getting more of a footprint for the circus I work in, I'm giving a sense of one of those fast moving sidewalks at the core of our infrastructure (coded reflexes, superhumanly fast business processes). Math precollege should be a door into all sorts of careers (starring roles) that include numerate activities. It's not about Ivory Tower PhD mathematicians having exclusive access to future recruits, shoving the rest of us aside because our skills are "impure" (not pure math).
What passes for "pure math" would be something to study in college, after getting a broad sampling ahead of time, good overview, the job of a prespecializing curriculum. In the meantime, if your school doesn't give a clear window into computer science in over four years of numeracy training, then hey, its probably a *very* slow moving sidewalk (more 1900s pedantic and plodding than fast paced like TV).[3]
Kirby [1] Like when I do the IEEE lecture on Nov 4 at the Armory (theater), I'll be talking about coxeter.4d versus einstein.4d versus bucky.4d  three namespaces, named for thinkers, in which the concept of "four dimensional" makes sense  but in quite different language games. (a)
[2] I like telling the story of those Italian Renaissance era polynomial solvers, a proprietary model in which mathematicians were like race horses, gained ownerpatrons who would stable them, let them work out, then they'd have like "cock fights" in the village square, to see how could solve whatever third of fourth degree polynomial fastest. Without this kind of focus, polynomials wouldn't have the momentum they still have to this day, as a key math topic precollege (and another kind of "math object" from a Pythonic math point of view).(b)
[3] Marshall McLuhan wasn't just blowing smoke. People who grow up on a lot of TV are geared differently and in the early 21st century a lot of what "school" is about is asserting the value system of a preTV era (pre computer, pre calculator...). To "side with the kids" would be entirely subversive of traditional classroom thinking, would involve a lot more learning how to make televisions (multitrack) not just passively viewing it. In my model numeracy classes, making "math shorts" (like on Sesame Street) and uploading 'em to YouTube, for peers to admire (peers thousands of miles away perhaps  no problemo) is a big part of the action.
(a) FYI here's the bio of Kirby that went out to subscribers:
An IEEE Oregon Section event
"R. Buckminster Fuller: The History (and Mystery) of the Universe"
with exclusive presentation by local Buckminster scholar and consultant to the playwright, Kirby Urner Tuesday, November 4, 2008 on the Mezzanine at Portland Center Stage Gerding Theater at the Armory
128 NW Eleventh Avenue, Portland, OR 97209
Hors d'oeuvres Reception: 5:30 p.m.
Presentation and Discussion: 6:00 p.m.
Theater Performance: 7:30 p.m.
$49 per person. Tickets are limited.
Please register by October 14, 2008. For more information and to register go to <link here>.
We regret that we cannot offer refunds for cancellations received after October 14.

R. Buckminster Fuller: The History (and Mystery) of the Universe
Written and directed by D.W. Jacobs from the life, work and writings of R. Buckminster Fuller
Play:
"Everything you've learned in school as 'obvious'
becomes less and less obvious as you begin to study the universe." 
Buckminster Fuller
Does humanity have the chance to endure successfully
on planet Earth, and if so, how? This is the question framed by
Buckminster Fuller, the engineer, designer, poet, and philosopher who,
among other things, was Mensa's second president and invented the
geodesic dome. Join us for an unforgettable journey inside one of the
most remarkable minds of the 20th century in a oneman show that blends
videos, lectures, poetry and a healthy dash of humanist humor. A hero
of the sustainability movement, Bucky framed many of the great ideas of
his time and ours. This is your chance to get to know the man behind
the worldsaving mission.
Presentation:
How has the literature developed since the
publication of 'Grunch of Giants' in 1983 and what are likely outcomes
and future directions projects Fuller started over a lifetime of heavy
lifting?
Speaker:
Kirby Urner started exploring Fuller's work in
earnest following his earning a BA in philosophy from Princeton
University, while serving as a high school math teacher in Jersey City.
He's served as a contributing editor for McGrawHill, Rockefeller
Center, political activist for Project VOTE! in Washington DC, and
computer programmer for myriad governmental and nonprofit organizations
in Greater Portland. Working in cahoots with Kiyoshi Kuromiya, Fuller's
lieutenant on a couple of key
books, he snagged the domain name bfi.org and served as the Buckminster
Fuller Institute's first web wrangler. His 'Synergetics on the Web' is
one of the main stops for Bucky scholars to this day (<a href="outbind://83/www.grunch.net/synergetics">www.grunch.net/synergetics). Kirby is an IEEE member.
(b) yes, tell them early that we have no "closed form algebraic solution" to fifth degree polynomials, but that doesn't keep Python from being useful in implementing some of the progessive approximations for rootfinding, such as you get under the hood with Mathematica et al. I've got a prototypical Polynomial class out there somewhere that self solves pretty well, maybe others here do too.
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


[Kirby, I find it very difficult to follow your messages; they tend to
be long and meandering. I'm certain I'm not the only one. Please try
to be more directly ontopic and succinct.]
On Oct 6, 2008, at 10:56 AM, kirby urner wrote:
> What passes for "pure math" would be something to study in college,
> after getting a broad sampling ahead of time, good overview, the job
> of a prespecializing curriculum.
Speaking with no experience teaching mathematics, only learning it,
this statement strikes me as sheer nonsense. It's like saying "what
passes for painting would be something to study in college, after
getting a broad sampling of brushes, stroke techniques and paint
chemistry ahead of time, all without ever seeing an actual painting."
This isn't a discussion that's particularly ontopic for Python's edu
sig, so I won't belabor it much. I share the views expressed at some
length in Paul Lockhart's excellent "A mathematician's lament" (< http://radian.org/~krstic/LockhartsLament.pdf
>). In summary, if you don't show kids that mathematics is something
beautiful, how are they supposed to have anything but bored disregard
for the seemingly meaningless mechanics they're taught for 8 years
before college? Fractions don't qualify as beauty. Many aspects of
pure mathematics do.

Ivan Krstić < [hidden email]>  http://radian.org_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


On Mon, Oct 6, 2008 at 1:28 PM, Ivan Krstić <[hidden email]> wrote:
[Kirby, I find it very difficult to follow your messages; they tend to be long and meandering. I'm certain I'm not the only one. Please try to be more directly ontopic and succinct.]
[ they have been lately, yes, though if you go back in the archive you'll find more succinct ones ]
On Oct 6, 2008, at 10:56 AM, kirby urner wrote:
What passes for "pure math" would be something to study in college, after getting a broad sampling ahead of time, good overview, the job of a prespecializing curriculum.
Speaking with no experience teaching mathematics, only learning it, this statement strikes me as sheer nonsense. It's like saying "what passes for painting would be something to study in college, after getting a broad sampling of brushes, stroke techniques and paint chemistry ahead of time, all without ever seeing an actual painting."
More I'm saying mathematics has a long and proud history outside of Ivory Tower specialties, a johnny come lately invention, whereas Leibniz, to take an example, was what we'd today call a polymath. Precollege we do polymath, until you're old enough to make your own choices and maybe not get suckered by folks who talk a brave talk, but seem to dish out the same crufty / stale pablum year after year, left to their own devices, despite tremendous advances in the literature.
This isn't a discussion that's particularly ontopic for Python's edusig, so I won't belabor it much. I share the views expressed at some length in Paul Lockhart's excellent "A mathematician's lament" (<http://radian.org/~krstic/LockhartsLament.pdf>). In summary, if you don't show kids that mathematics is something beautiful, how are they supposed to have anything but bored disregard for the seemingly meaningless mechanics they're taught for 8 years before college? Fractions don't qualify as beauty. Many aspects of pure mathematics do.
Continued fractions do, especially:
IDLE 1.2.1 >>> from __future__ import division >>> 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1)))))) 0.61904761904761907 >>> 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1))))))
0.61538461538461542 >>> 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1))))))))) 0.6179775280898876
[ much easier when you have colorcoded parentheses checking, like in IDLE ]
Better in Akbar font. We appear to be approaching something, from above and below.
Kirby

Ivan Krstić <[hidden email]>  http://radian.org
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


My spin in Pythonic Math has been to suggest "dot notation" become accepted as math notation
I absolutely agree with this.
In about 5 weeks I'll be giving a California Math Council presentation that I titled Fractions are Objects, not Unfinished Division Problems.
I submitted the proposal with the attitude of 'who cares? Let's just see what happens.'
Surprise! They accepted.
OK, so now I have to have something to say. : )
I think the theme of 'dot notation' as a kind of standard math notation would be valuable.
Generally, I want to present
1. The importance of 'computational thinking' as a math standard 2. Python as a vehicle for this
Thanks very much for any helpful suggestions along these lines.
 Michel
2008/10/6 kirby urner <[hidden email]>
2008/10/4 michel paul <[hidden email]>
For math classes I think it's more pertinent to focus on functional interactions and not on IO issues, and that was what I was trying to get at.
I'm enjoying this thread.
My spin in Pythonic Math has been to suggest "dot notation" become accepted as math notation, and with it the concept of namespaces, which I tell my students is one of the most important mathematical concepts they'll ever learn. We look at how several languages deal with the problem (of name collisions, of disambiguation), including Java's "reverse URL" strategy e.g. net.4dsolutions.mathobjects.vector or whatever.[1]
I tend to look at .py modules as "fish tanks" i.e. ecosystems, with both internal and external (import) dependencies, with the user of said fish tank being somewhat the biologist, in testing to find out what's in there, what the behaviors are.
Starting with the math module is of course apropos, discussing the functions, not shying away from trig even pre high school, no reason to withhold about cosine just because they're "young" (this is actually a prime time to gain exposure to these useful and timetested ideas).
Because of my "fish tank" idea, and using the math module as a model, I don't encourage "self prompting" i.e. using raw_input for much of anything. We need to "feed the fish" directly, i.e. pass arguments directly to functions, with f ( ) looking like a creature with a mouth, ready to eat something. fish( ).
Regarding GOTO, sometime last month I think it was, I told the story of assembler (JMP) and spaghetti code, Djikstra to the rescue, further developments. It's through story telling that we get more of the nuance. I'm a big believer in using this "time dimension" even if not doing anything computer (hard to imagine) i.e. the lives of mathematicians, their historical context, why they did what they did  critical content, not sidebar dispensible, not optional reading.[2]
Metaphor: education systems are like those old Heinlein moving sidewalks (science fiction), where you can't jump on the fastmoving one at the center from zero, have to slide from walk to walk, each one a little faster, and likewise when a approaching a destination, start to slow down.
By including more content from geek world, getting more of a footprint for the circus I work in, I'm giving a sense of one of those fast moving sidewalks at the core of our infrastructure (coded reflexes, superhumanly fast business processes). Math precollege should be a door into all sorts of careers (starring roles) that include numerate activities. It's not about Ivory Tower PhD mathematicians having exclusive access to future recruits, shoving the rest of us aside because our skills are "impure" (not pure math).
What passes for "pure math" would be something to study in college, after getting a broad sampling ahead of time, good overview, the job of a prespecializing curriculum. In the meantime, if your school doesn't give a clear window into computer science in over four years of numeracy training, then hey, its probably a *very* slow moving sidewalk (more 1900s pedantic and plodding than fast paced like TV).[3]
Kirby [1] Like when I do the IEEE lecture on Nov 4 at the Armory (theater), I'll be talking about coxeter.4d versus einstein.4d versus bucky.4d  three namespaces, named for thinkers, in which the concept of "four dimensional" makes sense  but in quite different language games. (a)
[2] I like telling the story of those Italian Renaissance era polynomial solvers, a proprietary model in which mathematicians were like race horses, gained ownerpatrons who would stable them, let them work out, then they'd have like "cock fights" in the village square, to see how could solve whatever third of fourth degree polynomial fastest. Without this kind of focus, polynomials wouldn't have the momentum they still have to this day, as a key math topic precollege (and another kind of "math object" from a Pythonic math point of view).(b)
[3] Marshall McLuhan wasn't just blowing smoke. People who grow up on a lot of TV are geared differently and in the early 21st century a lot of what "school" is about is asserting the value system of a preTV era (pre computer, pre calculator...). To "side with the kids" would be entirely subversive of traditional classroom thinking, would involve a lot more learning how to make televisions (multitrack) not just passively viewing it. In my model numeracy classes, making "math shorts" (like on Sesame Street) and uploading 'em to YouTube, for peers to admire (peers thousands of miles away perhaps  no problemo) is a big part of the action.
(a) FYI here's the bio of Kirby that went out to subscribers:
An IEEE Oregon Section event
"R. Buckminster Fuller: The History (and Mystery) of the Universe"
with exclusive presentation by local Buckminster scholar and consultant to the playwright, Kirby Urner Tuesday, November 4, 2008 on the Mezzanine at Portland Center Stage Gerding Theater at the Armory
128 NW Eleventh Avenue, Portland, OR 97209
Hors d'oeuvres Reception: 5:30 p.m.
Presentation and Discussion: 6:00 p.m.
Theater Performance: 7:30 p.m.
$49 per person. Tickets are limited.
Please register by October 14, 2008. For more information and to register go to <link here>.
We regret that we cannot offer refunds for cancellations received after October 14.

R. Buckminster Fuller: The History (and Mystery) of the Universe
Written and directed by D.W. Jacobs from the life, work and writings of R. Buckminster Fuller
Play:
"Everything you've learned in school as 'obvious'
becomes less and less obvious as you begin to study the universe." 
Buckminster Fuller
Does humanity have the chance to endure successfully
on planet Earth, and if so, how? This is the question framed by
Buckminster Fuller, the engineer, designer, poet, and philosopher who,
among other things, was Mensa's second president and invented the
geodesic dome. Join us for an unforgettable journey inside one of the
most remarkable minds of the 20th century in a oneman show that blends
videos, lectures, poetry and a healthy dash of humanist humor. A hero
of the sustainability movement, Bucky framed many of the great ideas of
his time and ours. This is your chance to get to know the man behind
the worldsaving mission.
Presentation:
How has the literature developed since the
publication of 'Grunch of Giants' in 1983 and what are likely outcomes
and future directions projects Fuller started over a lifetime of heavy
lifting?
Speaker:
Kirby Urner started exploring Fuller's work in
earnest following his earning a BA in philosophy from Princeton
University, while serving as a high school math teacher in Jersey City.
He's served as a contributing editor for McGrawHill, Rockefeller
Center, political activist for Project VOTE! in Washington DC, and
computer programmer for myriad governmental and nonprofit organizations
in Greater Portland. Working in cahoots with Kiyoshi Kuromiya, Fuller's
lieutenant on a couple of key
books, he snagged the domain name bfi.org and served as the Buckminster
Fuller Institute's first web wrangler. His 'Synergetics on the Web' is
one of the main stops for Bucky scholars to this day (www.grunch.net/synergetics). Kirby is an IEEE member.
(b) yes, tell them early that we have no "closed form algebraic solution" to fifth degree polynomials, but that doesn't keep Python from being useful in implementing some of the progessive approximations for rootfinding, such as you get under the hood with Mathematica et al. I've got a prototypical Polynomial class out there somewhere that self solves pretty well, maybe others here do too.
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


Continued fractions do, especially:
IDLE 1.2.1 >>> from __future__ import division >>> 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1)))))) 0.61904761904761907 >>> 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1))))))
0.61538461538461542 >>> 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1))))))))) 0.6179775280898876
Just to extend here a bit, these generators are not computationally efficient; there's a much better way to do continued fractions, in terms of algorithms, Tim Peters showing me some ropes early on in this archive, CuttheKnot a pretty good website as I recall, plus several others...
However, sometimes computational efficiency isn't the point so much as conceptual transparency, and in this respect I think these two have pedagogical value: In Python 3.x... IDLE 3.0a2 >>> from continued import *
>>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'continued_1', 'continued_2'] >>> thegen = continued_2() # less pathological
>>> for i in range(10): print ( next ( thegen) ) 1/(1 + 0)=1.0 1/(1 + 1/(1 + 0))=0.5 1/(1 + 1/(1 + 1/(1 + 0)))=0.666666666667 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0))))=0.6 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0)))))=0.625
1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0))))))=0.615384615385 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0)))))))=0.619047619048 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0))))))))=0.617647058824
1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0)))))))))=0.618181818182 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0))))))))))=0.61797752809 >>> thegen = continued_1() # the first thing I tried
>>> for i in range(10): print ( next ( thegen) ) 1/(1 + 0)=1.0 1/(1 + 1/(1 + 0))=0.5 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0))))=0.6 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0))))))))=0.617647058824
1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 0))))))))))))))))=0.6180338134 Traceback (most recent call last): File "<pyshell#7>", line 1, in <module>
for i in range(10): print ( next ( thegen) ) File "/home/kirby/continued.py", line 4, in continued_1 yield expr % 0 + "=" + str (eval (expr % "0") ) MemoryError >>>
def continued_1( ): expr = "1/(1 + %s)" while True: yield expr % 0 + "=" + str (eval (expr % "0") ) expr = expr % expr # doubles in size, overflow quickly
def continued_2( ): expr = "1/(1 + %s)" while True: yield expr % 0 + "=" + str (eval (expr % "0") ) expr = expr % "1/(1 + %s)" # more incremental, converges more slowly
Kirby Princeton '80 (noticing krstic's harvard.edu) PS: for those not up on this abstruse topic, we're approaching 1/phi in the above examples where phi == (1 + math.sqrt( 5 ))/2
[ much easier when you have colorcoded parentheses checking, like in IDLE ]
Better in Akbar font. We appear to be approaching something, from above and below.
Kirby
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


I agree with this
1. The importance of 'computational thinking' as a math standard
2. Python as a vehicle for this
But it is important to make a distinction:
a) a math formula represents a relation between objects and the objects math speaks about (with very few exceptions) do not have a finite representation, only an approximate representation (think of rational numbers, Hilbert spaces, etc.)
b) an algorithm represents a process on how to manipulate those objects and/or their approximate representation.
While math and math teaching could benefit from focusing more on process and computations (and there python can play an important role) rather than relations, it is important not to trivialize things. For example:
In math a fraction is an equivalence class containing an infinite number of couples (x,y) equivalent under (x,y)~(x',y') iff x*y' = y*x'.
Any element of the class can be described using, for example, a python tuple or other python object. The faction itself cannot.
It is important to not to loose sight of the distinctions. Math is gives us the ability to handle and tame the concept of infinite, something that computers have never been good at.
Massimo
________________________________________
From: edusigbounces+mdipierro= [hidden email] [edusigbounces+mdipierro= [hidden email]] On Behalf Of michel paul [ [hidden email]]
Sent: Monday, October 06, 2008 10:09 PM
To: kirby urner
Cc: [hidden email]
Subject: Re: [Edusig] Algebra 2
My spin in Pythonic Math has been to suggest "dot notation" become accepted as math notation
I absolutely agree with this.
In about 5 weeks I'll be giving a California Math Council presentation that I titled Fractions are Objects, not Unfinished Division Problems.
I submitted the proposal with the attitude of 'who cares? Let's just see what happens.'
Surprise! They accepted.
OK, so now I have to have something to say. : )
I think the theme of 'dot notation' as a kind of standard math notation would be valuable.
Generally, I want to present
1. The importance of 'computational thinking' as a math standard
2. Python as a vehicle for this
Thanks very much for any helpful suggestions along these lines.
 Michel
2008/10/6 kirby urner < [hidden email]<mailto: [hidden email]>>
2008/10/4 michel paul < [hidden email]<mailto: [hidden email]>>
For math classes I think it's more pertinent to focus on functional interactions and not on IO issues, and that was what I was trying to get at.
I'm enjoying this thread.
My spin in Pythonic Math has been to suggest "dot notation" become accepted as math notation, and with it the concept of namespaces, which I tell my students is one of the most important mathematical concepts they'll ever learn. We look at how several languages deal with the problem (of name collisions, of disambiguation), including Java's "reverse URL" strategy e.g. net.4dsolutions.mathobjects.vector or whatever.[1]
I tend to look at .py modules as "fish tanks" i.e. ecosystems, with both internal and external (import) dependencies, with the user of said fish tank being somewhat the biologist, in testing to find out what's in there, what the behaviors are.
Starting with the math module is of course apropos, discussing the functions, not shying away from trig even pre high school, no reason to withhold about cosine just because they're "young" (this is actually a prime time to gain exposure to these useful and timetested ideas).
Because of my "fish tank" idea, and using the math module as a model, I don't encourage "self prompting" i.e. using raw_input for much of anything. We need to "feed the fish" directly, i.e. pass arguments directly to functions, with f ( ) looking like a creature with a mouth, ready to eat something. fish( ).
Regarding GOTO, sometime last month I think it was, I told the story of assembler (JMP) and spaghetti code, Djikstra to the rescue, further developments. It's through story telling that we get more of the nuance. I'm a big believer in using this "time dimension" even if not doing anything computer (hard to imagine) i.e. the lives of mathematicians, their historical context, why they did what they did  critical content, not sidebar dispensible, not optional reading.[2]
Metaphor: education systems are like those old Heinlein moving sidewalks (science fiction), where you can't jump on the fastmoving one at the center from zero, have to slide from walk to walk, each one a little faster, and likewise when a approaching a destination, start to slow down.
By including more content from geek world, getting more of a footprint for the circus I work in, I'm giving a sense of one of those fast moving sidewalks at the core of our infrastructure (coded reflexes, superhumanly fast business processes). Math precollege should be a door into all sorts of careers (starring roles) that include numerate activities. It's not about Ivory Tower PhD mathematicians having exclusive access to future recruits, shoving the rest of us aside because our skills are "impure" (not pure math).
What passes for "pure math" would be something to study in college, after getting a broad sampling ahead of time, good overview, the job of a prespecializing curriculum. In the meantime, if your school doesn't give a clear window into computer science in over four years of numeracy training, then hey, its probably a *very* slow moving sidewalk (more 1900s pedantic and plodding than fast paced like TV).[3]
Kirby
[1] Like when I do the IEEE lecture on Nov 4 at the Armory (theater), I'll be talking about coxeter.4d versus einstein.4d versus bucky.4d  three namespaces, named for thinkers, in which the concept of "four dimensional" makes sense  but in quite different language games. (a)
[2] I like telling the story of those Italian Renaissance era polynomial solvers, a proprietary model in which mathematicians were like race horses, gained ownerpatrons who would stable them, let them work out, then they'd have like "cock fights" in the village square, to see how could solve whatever third of fourth degree polynomial fastest. Without this kind of focus, polynomials wouldn't have the momentum they still have to this day, as a key math topic precollege (and another kind of "math object" from a Pythonic math point of view).(b)
[3] Marshall McLuhan wasn't just blowing smoke. People who grow up on a lot of TV are geared differently and in the early 21st century a lot of what "school" is about is asserting the value system of a preTV era (pre computer, pre calculator...). To "side with the kids" would be entirely subversive of traditional classroom thinking, would involve a lot more learning how to make televisions (multitrack) not just passively viewing it. In my model numeracy classes, making "math shorts" (like on Sesame Street) and uploading 'em to YouTube, for peers to admire (peers thousands of miles away perhaps  no problemo) is a big part of the action.
(a) FYI here's the bio of Kirby that went out to subscribers:
An IEEE Oregon Section event
"R. Buckminster Fuller: The History (and Mystery) of the Universe"
with exclusive presentation by local Buckminster scholar and consultant to the playwright, Kirby Urner Tuesday, November 4, 2008 on the Mezzanine at Portland Center Stage Gerding Theater at the Armory
128 NW Eleventh Avenue, Portland, OR 97209
Hors d'oeuvres Reception: 5:30 p.m.
Presentation and Discussion: 6:00 p.m.
Theater Performance: 7:30 p.m.
$49 per person. Tickets are limited.
Please register by October 14, 2008. For more information and to register go to <link here>.
We regret that we cannot offer refunds for cancellations received after October 14.

R. Buckminster Fuller: The History (and Mystery) of the Universe
Written and directed by D.W. Jacobs from the life, work and writings of R. Buckminster Fuller
Play:
"Everything you've learned in school as 'obvious' becomes less and less obvious as you begin to study the universe."  Buckminster Fuller
Does humanity have the chance to endure successfully on planet Earth, and if so, how? This is the question framed by Buckminster Fuller, the engineer, designer, poet, and philosopher who, among other things, was Mensa's second president and invented the geodesic dome. Join us for an unforgettable journey inside one of the most remarkable minds of the 20th century in a oneman show that blends videos, lectures, poetry and a healthy dash of humanist humor. A hero of the sustainability movement, Bucky framed many of the great ideas of his time and ours. This is your chance to get to know the man behind the worldsaving mission.
Presentation:
How has the literature developed since the publication of 'Grunch of Giants' in 1983 and what are likely outcomes and future directions projects Fuller started over a lifetime of heavy lifting?
Speaker:
Kirby Urner started exploring Fuller's work in earnest following his earning a BA in philosophy from Princeton University, while serving as a high school math teacher in Jersey City. He's served as a contributing editor for McGrawHill, Rockefeller Center, political activist for Project VOTE! in Washington DC, and computer programmer for myriad governmental and nonprofit organizations in Greater Portland. Working in cahoots with Kiyoshi Kuromiya, Fuller's lieutenant on a couple of key books, he snagged the domain name bfi.org< http://bfi.org> and served as the Buckminster Fuller Institute's first web wrangler. His 'Synergetics on the Web' is one of the main stops for Bucky scholars to this day (www.grunch.net/synergetics). Kirby is an IEEE member.
(b) yes, tell them early that we have no "closed form algebraic solution" to fifth degree polynomials, but that doesn't keep Python from being useful in implementing some of the progessive approximations for rootfinding, such as you get under the hood with Mathematica et al. I've got a prototypical Polynomial class out there somewhere that self solves pretty well, maybe others here do too.
_______________________________________________
Edusig mailing list
[hidden email]<mailto: [hidden email]>
http://mail.python.org/mailman/listinfo/edusig_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


On Mon, Oct 6, 2008 at 10:05 PM, DiPierro, Massimo
< [hidden email]> wrote:
>
> I agree with this
>
> 1. The importance of 'computational thinking' as a math standard
> 2. Python as a vehicle for this
>
> But it is important to make a distinction:
>
> a) a math formula represents a relation between objects and the objects math speaks about (with very few exceptions) do not have a finite representation, only an approximate representation (think of rational numbers, Hilbert spaces, etc.)
> b) an algorithm represents a process on how to manipulate those objects and/or their approximate representation.
>
There's a whole philosophy of mathematics, and of language more
generally, implicit in your (a) and (b), inheriting from both realism
(as in "the reality of Platonic objects") and nominalism (as in "nouns
point to things"  with "pointing" considered entirely
nonproblematic).
The linguistic turn (named by Rorty), launched by Nietzsche and
culminating in Wittgenstein's later works, is about undoing some of
these gestalts, returning us to a more operational view of how
language works in the world (or doesn't).
This is getting way off topic I'm sure some are thinking, and I agree,
so just lets admit we don't all come to mathematics from the same
perspective, and that this is as it should be.
> While math and math teaching could benefit from focusing more on process and computations (and there python can play an important role) rather than relations, it is important not to trivialize things. For example:
>
> In math a fraction is an equivalence class containing an infinite number of couples (x,y) equivalent under (x,y)~(x',y') iff x*y' = y*x'.
> Any element of the class can be described using, for example, a python tuple or other python object. The faction itself cannot.
The way I'd put it is the class Rat (rational number class) spells out
what fractions might do, in terms of __add__, __mul__ and so on, but
then there's no limit on the number of fraction objects you might want
to build from this blueprint, i.e. the type of object is distinct from
the instances, in a pleasing, teachable, lexical way. At least as
relevant as Bertrand Russell's stuff if you ask me, this object
oriented paradigm.
And yes, no limit on the number of tuples that map to that tuple in
lowest terms, which is where gcd comes in, gotta teach that. Pre
college algebra with no introduction to Euclid's Algorithm for the GCD
is laughably idiotic and I openly sneer at the idea when I think no
one is looking.
>
> It is important to not to loose sight of the distinctions. Math is gives us the ability to handle and tame the concept of infinite, something that computers have never been good at.
>
> Massimo
I like Knuth's take, lectures at MIT (audio on the web, maybe video
too as I recall), which is very into finitude.
Accepting finitude takes courage too. I'm glad our computers are
harnessing it, leaving humans to their fantasies of greater greatness.
Kirby
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


I'm changing pace slightly, after making 2 points: (1) Dot notation does exist in Maths. Its just called "subscript" notation instead. But its the same thing. I try to make a habit of using subscripts (and subsubscripts) as much as possible because it shows the same logical relationship.
(2) The fractions you show don't have beauty. In continued fractions, its recursion that has the mathematical beauty. (3) A practical question  can any high/middleschool teachers give me clear pros/cons of using programming as a tool to teach algebra? I'm rewriting the Year 8 maths program for next year (1314 year olds) and am considering trialling using Python. The students are the school are very techsavvy and I wouldn't aim to teach them anything more than formulas really... formulas, basic IO and some ifs. Maybe (maybe) could do a basic for i in range(20) loop, but nothing more than that.
Note that I am the computing teacher in the school; the majority of my teaching is the computing studies subjects for older students (1518 year olds). On Tue, Oct 7, 2008 at 3:42 PM, kirby urner <[hidden email]> wrote:
On Mon, Oct 6, 2008 at 10:05 PM, DiPierro, Massimo
< [hidden email]> wrote:
>
> I agree with this
>
> 1. The importance of 'computational thinking' as a math standard
> 2. Python as a vehicle for this
>
> But it is important to make a distinction:
>
> a) a math formula represents a relation between objects and the objects math speaks about (with very few exceptions) do not have a finite representation, only an approximate representation (think of rational numbers, Hilbert spaces, etc.)
> b) an algorithm represents a process on how to manipulate those objects and/or their approximate representation.
>
There's a whole philosophy of mathematics, and of language more
generally, implicit in your (a) and (b), inheriting from both realism
(as in "the reality of Platonic objects") and nominalism (as in "nouns
point to things"  with "pointing" considered entirely
nonproblematic).
The linguistic turn (named by Rorty), launched by Nietzsche and
culminating in Wittgenstein's later works, is about undoing some of
these gestalts, returning us to a more operational view of how
language works in the world (or doesn't).
This is getting way off topic I'm sure some are thinking, and I agree,
so just lets admit we don't all come to mathematics from the same
perspective, and that this is as it should be.
> While math and math teaching could benefit from focusing more on process and computations (and there python can play an important role) rather than relations, it is important not to trivialize things. For example:
>
> In math a fraction is an equivalence class containing an infinite number of couples (x,y) equivalent under (x,y)~(x',y') iff x*y' = y*x'.
> Any element of the class can be described using, for example, a python tuple or other python object. The faction itself cannot.
The way I'd put it is the class Rat (rational number class) spells out
what fractions might do, in terms of __add__, __mul__ and so on, but
then there's no limit on the number of fraction objects you might want
to build from this blueprint, i.e. the type of object is distinct from
the instances, in a pleasing, teachable, lexical way. At least as
relevant as Bertrand Russell's stuff if you ask me, this object
oriented paradigm.
And yes, no limit on the number of tuples that map to that tuple in
lowest terms, which is where gcd comes in, gotta teach that. Pre
college algebra with no introduction to Euclid's Algorithm for the GCD
is laughably idiotic and I openly sneer at the idea when I think no
one is looking.
>
> It is important to not to loose sight of the distinctions. Math is gives us the ability to handle and tame the concept of infinite, something that computers have never been good at.
>
> Massimo
I like Knuth's take, lectures at MIT (audio on the web, maybe video
too as I recall), which is very into finitude.
Accepting finitude takes courage too. I'm glad our computers are
harnessing it, leaving humans to their fantasies of greater greatness.
Kirby
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


2008/10/7 Matt K <[hidden email]>
(3) A practical question  can any high/middleschool teachers give me clear pros/cons of using programming as a tool to teach algebra? I'm rewriting the Year 8 maths program for next year (1314 year olds) and am considering trialling using Python. The students are the school are very techsavvy and I wouldn't aim to teach them anything more than formulas really... formulas, basic IO and some ifs. Maybe (maybe) could do a basic for i in range(20) loop, but nothing more than that.
Not a teacher now, but...
My first experience programming was doing quadratic equations on punchcards. I loved it. It allowed me to learn much more about the equations than if I had to only do them by hand. (Note that I thought quadratic equations were pretty kewl and used to do them for fun while babysitting...) I still find myself turning to the computer to run an equation and see what it really does when the physical mechanics of doing it by hand isn't in the way...
Unfortunately, I was left with the impression that you could *only* do equations unless you went on to become a wizard. So there is a downside, imho, to teaching programming only as part of the math classes. I wish I'd had some in other classes (literature, for example) to help me realize I could use programming more widely.
(Hope this was coherent; still working on my first cuppa joe.)
 cordially, Anna  Walking through the water. Trying to get across. Just like everybody else.
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


Anna, is what you describe programming (as in Python) or using graphing software (as in Maple/Matlab)? I am not certain which you are referring to by reading your email. I think the difference is significant  the latter converts an equation to a graph, the former might show students the generalisation of an algorithm.
The downside you describe won't be an issue these days (at least in my school)  Python is so powerful that kids will start playing around with it out of my control  plus they always see what the kids who are older than them are doing.
On Wed, Oct 8, 2008 at 12:08 AM, Anna Ravenscroft <[hidden email]> wrote:
2008/10/7 Matt K <[hidden email]>
(3) A practical question  can any high/middleschool teachers give me clear pros/cons of using programming as a tool to teach algebra? I'm rewriting the Year 8 maths program for next year (1314 year olds) and am considering trialling using Python. The students are the school are very techsavvy and I wouldn't aim to teach them anything more than formulas really... formulas, basic IO and some ifs. Maybe (maybe) could do a basic for i in range(20) loop, but nothing more than that.
Not a teacher now, but...
My first experience programming was doing quadratic equations on punchcards. I loved it. It allowed me to learn much more about the equations than if I had to only do them by hand. (Note that I thought quadratic equations were pretty kewl and used to do them for fun while babysitting...) I still find myself turning to the computer to run an equation and see what it really does when the physical mechanics of doing it by hand isn't in the way...
Unfortunately, I was left with the impression that you could *only* do equations unless you went on to become a wizard. So there is a downside, imho, to teaching programming only as part of the math classes. I wish I'd had some in other classes (literature, for example) to help me realize I could use programming more widely.
(Hope this was coherent; still working on my first cuppa joe.)
 cordially, Anna  Walking through the water. Trying to get across. Just like everybody else.
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


On Tue, Oct 7, 2008 at 7:18 AM, Matt K <[hidden email]> wrote:
Anna, is what you describe programming (as in Python) Back then it was basic. ;)
or using graphing software (as in Maple/Matlab)? Never used it.
I am not certain which you are referring to by reading your email.
Sorry  I thought the punchcards was pretty telling... ;)
I think the difference is significant  the latter converts an equation to a graph, the former might show students the generalisation of an algorithm.
The downside you describe won't be an issue these days (at least in my school)  Python is so powerful that kids will start playing around with it out of my control  plus they always see what the kids who are older than them are doing.
Yep. It's nice to have a language you *can* do more than just equations with without it being painful.  cordially, Anna  Walking through the water. Trying to get across.
Just like everybody else.
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


2008/10/7 Matt K < [hidden email]>:
> I'm changing pace slightly, after making 2 points:
>
> (1) Dot notation does exist in Maths. Its just called "subscript" notation
> instead. But its the same thing. I try to make a habit of using subscripts
> (and subsubscripts) as much as possible because it shows the same logical
> relationship.
>
Subscript in the sense of "dictionary key" more than "index into
sequence" as the former is more like __dict__ or __module__ (namespace
ideas), the latter more like a sequence wherein order matters
(namespaces are more cardinal than ordinal, more like dictionaries,
e.g. an arbitrary mix of Klingon and Chinese characters as subscripts,
no collation assumed).
> (2) The fractions you show don't have beauty. In continued fractions, its
> recursion that has the mathematical beauty.
I think rank and file math teachers overhype this "beauty" business,
then hypocritically suppress fractals precollege, even in the face of
obvious public demand and clear relevance to the complex plane, an IB
topic at least. Why not just say "interesting" or even "cute". In my
own curriculum writing, I try harder to be less disappointing to youth
e.g.
>
> (3) A practical question  can any high/middleschool teachers give me clear
> pros/cons of using programming as a tool to teach algebra? I'm rewriting the
I've taught high school math professionally (elite Catholic academy)...
Remember our gnu math curriculum aims at comprehension of RSA
precollege (the public key thing). We actually assign
'Cryptonomicon' as required reading in some electives.
So you need group theory, Fermat's Little Theorem (don't have to prove
it), Euler's (more general). Not any of it in exhaustive detail of
course, just a first pass, opening doors, showing there's life after
calculus.
> Year 8 maths program for next year (1314 year olds) and am considering
> trialling using Python. The students are the school are very techsavvy and
> I wouldn't aim to teach them anything more than formulas really... formulas,
> basic IO and some ifs. Maybe (maybe) could do a basic for i in range(20)
> loop, but nothing more than that.
Lots of sequences to get going (polyhedral and figurate numbers
especially, per Oregon Curriculum Network web pages).
Generators useful.
OEIS is available to each student, for independent study.
Vectors require VPython.
>
> Note that I am the computing teacher in the school; the majority of my
> teaching is the computing studies subjects for older students (1518 year
> olds).
I'm a math teacher for Saturday Academy, or was doing that recently
(lots of public writeups). More recently I've been developing a
Python Briefing for mature adults only, mostly teachers who already
know a thing or two about math and computer science, though rarely as
much as I do (grin).
Kirby
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


On Tue, Oct 7, 2008 at 9:52 AM, kirby urner < [hidden email]> wrote:
<< SNIP >>
> I think rank and file math teachers overhype this "beauty" business,
> then hypocritically suppress fractals precollege, even in the face of
> obvious public demand and clear relevance to the complex plane, an IB
> topic at least. Why not just say "interesting" or even "cute". In my
> own curriculum writing, I try harder to be less disappointing to youth
> e.g.
Sorry, missing link:
http://mybizmo.blogspot.com/2008/10/pythonicmath.htmlConnects to Kraftwerk and some multilingual counting exercises,
important for getting into greek (tetra, penta, hexa...) and hence
Polyhedra, a starting point for our geometry curriculum (the purely
flat stuff comes later, as less intuitive).
Kirby
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig


To Anna:Thanks for the clarification. I can understand that punchcard *should* be clear to me  but to me I've never seen or used one in my life; I only hear of them in fairytales with abbucusses and dragons.
To Kirby:
You can always subscript with words instead of just letters! That enables you to have more meaning. (more below) To Kirby and Andrew:I really like the idea but it sounds like you guys are talking at far far higher levels that I can achieve. The *stronger* students I'll be teaching, who *choose* to do an elective in computing, will come to properly understand loops only in about 2 years. I've tried to teach recursion to about 4 students while I've been a teacher, and only 2 have ever worked it out  and those students were exceptional. Things like classes are hidden from the students almost entirely until the final year, and even then they are only taught "as needed".
Which is why things like generators and classes for fractions are out. The syntax for that would just be too confusing. We're looking at the level of algebra with these kids where they have mostly learnt to add like terms and are perhaps beginning to factorise a simple common factor. Nothing like difference of two squares... just the beginnings. They'll start to do algebraic fractions and perhaps begin to appreciate the form y = mx + b.
But, it sounds like you've both done it with some success with significantly older (and smarter) students. I think you've motivated me to try it and see what happens! To Andrew:
I wouldn't expect to see results in a test. Really, if they're trying to be good at tests, the *best* way to do it is by rote. But if we're teaching a deep understanding (which we of course are!) then this will perhaps help  although I wouldn't expect the results to be apparent for a while. A solid understanding of algerbra will really help them once they get into the graphing topic intensely, which is 2 years later.
Further thoughts are welcome of course! Thanks heaps! Matt On Wed, Oct 8, 2008 at 2:36 AM, Anna Ravenscroft <[hidden email]> wrote:
On Tue, Oct 7, 2008 at 7:18 AM, Matt K <[hidden email]> wrote:
Anna, is what you describe programming (as in Python) Back then it was basic. ;)
or using graphing software (as in Maple/Matlab)? Never used it.
I am not certain which you are referring to by reading your email.
Sorry  I thought the punchcards was pretty telling... ;)
I think the difference is significant  the latter converts an equation to a graph, the former might show students the generalisation of an algorithm.
The downside you describe won't be an issue these days (at least in my school)  Python is so powerful that kids will start playing around with it out of my control  plus they always see what the kids who are older than them are doing.
Yep. It's nice to have a language you *can* do more than just equations with without it being painful.
 cordially, Anna  Walking through the water. Trying to get across.
Just like everybody else.
_______________________________________________
Edusig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edusig

