[Edu-sig] Math + Python: reviewing some themes (long)

michel paul mpaul213 at gmail.com
Sat Jan 30 03:40:23 CET 2010


On Fri, Jan 29, 2010 at 3:30 PM, kirby urner <kirby.urner at gmail.com> wrote:

>
> >There's a unifying heuristic not out of line with inherited
> >mathematics i.e. we already believe in types e.g. N, Z, Q, R, C
> >(natural, integer, rational, real, complex..) and so on, so pretty
> >seamless.
>

Actually, things are not so seamless in the secondary curriculum!  : )  Just
this week I had a fascinating experience exposing a seam in the current
secondary understanding of naturals.

There was a question on our Analysis final asking kids to find {whole
numbers} [image: \bigcap] {natural numbers}.  That question really bothered
me for two reasons:  at the beginning of the year I made it a big point to
emphasize to the kids that the typical schoolish distinction of the naturals
as {1, 2, 3, ...} and the 'wholes' as {0, 1, 2, 3, ...} is fuzzy.  Back in
the 19th century set theorists, logicians, and number theorists were
advocating a definition of the naturals as {0, 1, 2, 3, ...}.  Today we
would include computer scientists as advocating that definition.  I asked
them, "How many of you have been marked wrong on a math test because you
said zero was a natural number?"  So, wow, the universe operates in amazing
ways for that very question to then show up on the final!

And that was the second reason I was bothered.  I should have been included
in the final proofreading!  The version I saw did not have this question!
Although, I was not really that bothered.  I was actually delighted, because
it provided very good reason for having a pointed discussion.  My colleagues
were clearly baffled to find out that something that has always been
accepted as so fundamental in high school math has actually had two
interpretations since the 19th century!

So when we start second semester we're going to have another class
discussion on this!  I'm going to ask them if they remember my emphasizing
this, and if they recalled this when they took the final.

I think this very issue is important in emphasizing what we would mean by a
'computational' math curriculum.  It's not just about the machine.  It's not
just about 'using technology' to help us solve math problems.  It's about a
new way of thinking.  And in this new way of thinking there are a whole lot
of good reasons for teaching kids to think of zero as a natural number.
There's really no need served by including a 'seam' between the 'wholes' and
the 'naturals'.  I think emphasizing that kind of distinction as early as
our curriculum does causes all kinds of fundamental confusion.

Recently I've found Sage <http://sagemath.org> invaluable for the purpose of
getting computational thinking into the math curriculum.  I've spent the
last year figuring out how to harness Sage in class, and it is paying off.
The difficulty with a pure Python approach has been that it seems so foreign
to everyone from kids through administrators, it doesn't look like anything
that gets tested on state standards, and it seems like 'hard work' when we
already have these nifty hand-helds that graph any function you want.
However, the power of Sage blows any graphing calculator, even the new
Inspires, out of the water.  Simultaneously, you can program in pure
bare-bones Python within Sage.  So I have found it invaluable to capitalize
on the power of Sage to serve as a way to introduce into math classes the
value of the ability to think in pure Python.

Regarding the whole 'hand-held' selling point, these days this is a
meaningless point.  You can access your Sage notebook worksheets using a
smart phone!

Instead of 'hand-held' I've been advocating 'mind-held'.  A language is
mind-held.  Pretty cool.

I've been using Sage as my blackboard in my Analysis classes, and I've even
been able to start showing my FST kids (Functions, Statistics, Trig) pure
bare-bones Python.  They're supposedly the mathematically weaker, so I have
more wiggle room in the curriculum.  I asked them at mid-semester if they
would be interested in learning pure bare-bones Python, and they said
"Yes!"  I was delighted.  I did a lot of list-comprehensions with them.
Throw out a function and a domain.  Exercise: define a list of ordered pairs
using list comprehension.  They really could do it.  Especially one kid who
has always hated math.  He said this really made sense.  I also had them do
some turtle stuff and some Visual Python stuff.  Just simple things.  Like
one day using Visual in the lab we made 3-D parabolas out of spheres hanging
in space.  Way different than your typical graph.  The kids really liked
being able to zoom in and around the sphere, and I was thrilled that they
were getting list comprehensions.  A lot of them are still operating at the
level of 'tell me what to do', but there are also others that are exploring.

One of the really valuable features in Sage notebook is @interact.  With it
you can create interactive graphics for any function you want.  Specify a
function parameter, say x = (-10..10), and presto!  When you evaluate the
cell, that parameter gets represented as a slider from -10 to 10!  Very
cool, and very easy.

I finally feel like I'm getting some traction on implementing a
computational mathematics course.  I came really, really close last year,
but lack of action (due to a conflict of interests) smashed it.  I was
devastated, but I warned my department chair - "I'm not going to shut up
about this!"  it's been really, really hard, but I finally feel that useful
discussion is happening.  The counselors have requested a course description
that they can hand out to students and their parents.  I'm delighted that
they're doing this.  I'll append it below.  Sort of an updated Manifesto!  :
)

Oh, but first - if this course does happen I'll be using the Litvins' Math
for the Digital Age.  I love that book.  I told my prinicipal, "You usually
don't say of a text that 'It's beautiful', but this one is.  This is a
beautiful text."

*M A C H Math Analysis Computational Honors*

*What does “Computational” mean?*

"It is said that a concept is demonstrated to have been learned the best
when one explains that concept to others.  Programming is precisely that -
an expressive language, used to unambiguously describe all the steps
involved in problem solving of a certain type."

- Tony Targonski

*Computational Thinking* is a new way of thinking that will become just as
important to a well-educated person in the 21st century as reading and
writing is today. It has resulted in new inter-disciplinary majors such as
Computational Linguistics, Computational Biology, Computational Physics, and
Computational Mathematics, among others. Generally speaking, computational
thinking is the art of reducing complexity to a set of primitive
operations.  This way of thinking blends perfectly with the kind of thinking
that Math Analysis is supposed to be about.

*Students taking this course should not worry if they have never* *programmed
before.*  This course will introduce a complete beginner to contemporary
programming in a way that will enable them to efficiently articulate
mathematical concepts. *The point of this course is* *not learning to
program, but programming to learn.* We will be using a very easy to learn
language called *Python*.

*What is *Python?**

Python is a general purpose programming language that has developed a large
following over the last ten years or so. It is one of the top languages used
at Google and is also used at NASA, JPL, and YouTube and is continuing to
gain significant attention. It is an extremely easy and fun language to
learn. You can immediately begin to use it just like a calculator. It is
free to everyone and runs on all platforms. It is also an excellent language
for expressing mathematical ideas, and that is why many mathematicians and
scientists gravitate towards it. It is just as easy to learn as high school
Algebra, and learning it will help you better understand Algebra.  After you
have learned some Python you will be ready to use Sage.

*What is *SAGE?**

SAGE is a set of mathematical libraries built on top of Python creating a
free and open source state of the art CAS, Computer Algebra System, used by
professional mathematicians, university math departments, and even some high
school math departments.  SAGE offers Mathematica-like abilities, such as
detailed 3D color graphing. Cutting edge research is being done with it, but
it is also quite usable by high school students.  Anyone who knows a little
Python can immediately begin to use SAGE. You can actually use many of the
features in SAGE without knowing any Python, but you will be able to use it
much more effectively if you also know how to think in terms of simple
Python programs.

What you will learn in this course is how to *computationally analyze* some
fundamental ideas of mathematics. Your ability to computationally analyze
will provide you a good foundation for many important kinds of study and
career.  A student working through this class will be well prepared both for
further study of computer science and mathematics.


"Computer science is the new mathematics."
-- Dr. Christos Papadimitriou
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20100129/b7173db0/attachment-0001.htm>


More information about the Edu-sig mailing list