Gearing up (Python course...)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Gearing up (Python course...)

kirby urner-4
I'm gearing up to do another Python course.  PSU seems
more locked down than ever BTW.  I've gotta be met by an
official to hand out user logins, as these cannot be
transmitted electronically.

That's not how it used to be when I taught there before.

We're going back to hand carry and paper delivery for
more sensitive information apparently, kinda retro.
I should wear something sensibly 1940s.

A primary technique is to teach enough basic syntax,
after startup and shutdown practice, to enable "doodling".

This means I get to talk about one thing, while they
multi-task, checking out arithmetic ops, range(), slice,
a few string ops, check the error messages.

Chatting about help & dir helps some, but probably
more useful is I doodle some too, projecting up front.

We cover a few bases, then they doodle while I ramble.
Maybe I talk about PEPs, go over some history, yak
about Pycons, poster sessions, user groups...

Then we cover a few more bases and repeat.

Doodle while hearing some talk about open source,
GNU, GPL, MIT, OLPC... chime in with news and views?
We'll get to Lightning Talks later (a way for students
to voluntarily share about projects).

A goal is to develop comfort with simple interactivity,
you could say "using Python as a calculator".  Saving
to site-packages, importing the namespace (different
ways to import) should round out this first section.

In terms of content, things to program around, I tend
to wander into spatial geometry, but not with any
coordinates or turtles at first.

I've got this "geometry plus geography" heuristic
goin' where these are the only two subjects under
the sun (per posts to mathfuture, a Google group),
so it's easy for me to frequent this area.

Geometry is thinking (imagination) and Geography
is the real world (i.e. everything else).

I'm a big fan of "gnomon studies" [0] which includes
figurate and polyhedral numbers.  'The Book of
Numbers' by Conway & Guy was influential.

I've already filed hundreds of posts about this in this
archive, so probably shouldn't get too verbose.

10 * f * f + 2 is a good one to play with.

>>> [10 * f * f + 2 for f in range(11)]
[2, 12, 42, 92, 162, 252, 362, 492, 642, 812, 1002]

The initial 2 should be a 1 if you wanna match up
with Encyclopedia of Integer Sequences.[1]

I like having polyhedra going, via figurate numbers,
because they're the paradigm "objects" or "action
figures" of the cybernetic vista.

Figurate or polygon numbers become polyhedral
numbers, i.e. we go from triangular numbers to
tetrahedral numbers pretty easily, or squares
to half-octahedra (Egyptian pyramids).

[ Actually, over on Math Forum, I've got a
curriculum guy telling me polyhedra just don't
relate to anything, that he can see, so I realize
it's sometimes an uphill battle to champion
their relevance, chemistry and biology
notwithstanding (all geography in the two-
subject framework) ]

Any "sim" or screen character may be thought of
as an animated, multi-faceted avatar, a "puppet"
of behind-the-scenes software (screen-as-theater,
one of the oldest motifs, so familiar from television).

However, aside from a few Youtubes (e.g. [2]), other
static web pages, I'm mostly relying on student
imaginations to provide the visuals at first.  It's like
learning to read without pictures, engaging the
imagination while focusing on a purely lexical
activity (reading).

I'm pretty adamant that programming is a more lexical
and/or algebraic activity, and whereas I'm a big fan
of right brain mental geometry, I'm concerned that
too many resources pander to an anti-lexical bias,
feeding student aversion to "straight text".

At some point, it pays to stop trying to make every
experience some kind of video game.  Better to
get back to games with words themselves (more
like crossword puzzles) and cultivate an awareness
of those.

Messing with fonts may come in handy (in Portland
we have Bram Pitoyo, a total font head, frequents
the conferences).  I always like to show off Akbar
font, mention The Simpsons and Matt G. (from
around here).

There's a kind of stunting or atrophy of the left brain
we need to worry about as well (cuts both ways).

That's why I want early "doodling" to be chiefly
lexical, with no immediate "turtle gratification"
(nor VPython at first, much as I love to use that
add-on).

Remember, these are teenagers, not tiny children.
They likely know how to type some, and won't have
a problem spelling out words.

Having these "words" (expressions, short programs)
"laugh and play" i.e. "talk back" because of the
interpreter environment, is supposed to be a game
in itself (a kind of "language game").

It's supposed to be interesting to reverse lists (play
with palindromes), pop a stack, feed a queue or
whatever.  Look up in a dict.  import cos and sqrt.

>>> from math import sqrt as root2
>>> root2(4)
2.0

>>> def root3(x):  return pow(x, 1.0/3.0)

>>> root3(27)
3.0

To uphold my reputation as an "objects first" kind
of teacher, I'm going to focus at least part of my
patter on what OO is about and why it was supposed
to be an advance.

Functional programmers voice their concerns that
OO is potentially messy, doesn't do enough to save
us from ourselves.

But the goal was to imitate "the real world" in some way
(the geographic realm). Knowledge domains naturally
fragment into "things" with behaviors (capabilities)
and attributes (properties).

OO isn't a computer thing, it's a "natural habit of
thought" thing.  Here's one flavor of logic that aims
to capture "natural language" to some primitive
extent.  Philosophers please take note (they
haven't been, mostly).

And it's potentially messy because the real world
is messy.  The idea of objects with state, with APIs
to change state, is reflective of everyday encounters,
adventures in Geography (where even insects have
state).

I suppose that could be read as a defense of crummy
programming, but that's not my intent.

We do need to learn about pitfalls and the difference
between beautiful code and gnarly unmaintainable
code (the latter more likely what a solo programmer
will write, and think clear as day -- why we think a
minimum of two coders per project is a serious
benefit to all concerned).

What behaviors and attributes do polyhedra have?

Their number of vertexes V, edges E and faces F
(simple counts) are good examples of attributes.
Verbs would be "scale" (grow / shrink), "translate"
(move about, accelerate) and "rotate" (symmetries,
great circles of spin, axes, cleaving into parts).

Even without doing any graphics, we might
implement a method called "dual", which appears
to transform a polyhedron into its dual (I say
"appears" because in these simple "cave
painting" examples we might just switch
the values of V and F, keeping E the same
--- one line of code basically).

Showing off Google Sketchup might be worthwhile
at this juncture, even if it's more of a Ruby thing
(we like Ruby just fine).

I introduce "dot notation" as following these patterns
(sort of):  noun.verb(args); noun.adjective.  I'm
influenced by J here, which although more functional
in some ways, is all about using parts of speech,
grammar, as a way of talking about the J language.[3]

Language teachers will love computational math
all the more if it reinforces the importance of learning
parts of speech, so I figure this is a win-win when it
comes to inter-departmental relations.  The DOM
relates to language arts as well.  A lot of computer
topics are intrinsic to the humanities these days
(e.g. ConceptNet).[4]

More later,

Kirby

[0]
http://www.flickr.com/photos/17157315@N00/3195670892/in/photostream/
http://www.flickr.com/photos/17157315@N00/sets/72157617745459466/with/3195670892/

[1]
http://www.research.att.com/~njas/sequences/A005901

[2]  http://mybizmo.blogspot.com/2010/07/blog-post.html
http://www.flickr.com/photos/17157315@N00/sets/72157622797118549/with/3201379449/

[3]
http://www.jsoftware.com/help/dictionary/contents.htm
(I'm playing with the idea of using this in my Martian Math class at
Reed College)

[4]
http://controlroom.blogspot.com/2010/06/aristotle-was-right.html
_______________________________________________
Edu-sig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edu-sig
Reply | Threaded
Open this post in threaded view
|

Re: Gearing up (Python course...)

A. Jorge Garcia
Wow, Kirby, thanx for sharing all that you do!

I am relatively new to python, but not new to teaching with  
technology.  I've been teaching computer math and computer science  
since 1975.  Often times, however, I have done so in a vacuum.  It's  
nice to see what others are doing in this vein other than myself!

I am a math teacher by trade, but some how was fortunate enough to be  
involved with this sort if curriculum too.  That said, I do teach math  
in these courses but these are courses geared toward new programmers  
and an intro to syntax and semantics whether it be functional or  
object based programming.

In fact, this coming year I am starting a new course where math comes  
first but is python based.  I will be teaching a Calculus Lab using http://www.sagemath.org 
. So, your descriptions of curriculum and pedagogy re pythonic math  
are most enlightening!  If interested, please see the link on the  
right side of my blog entitled "Calculus Research Lab"

Thanx,
A. Jorge Garcia
Applied Math & CS
Baldwin SHS & Nassau CC
http://shadowfaxrant.blogspot.com
http://www.youtube.com/calcpage2009
Sent from my iPod

On Jul 10, 2010, at 4:32 AM, kirby urner <[hidden email]> wrote:

> I'm gearing up to do another Python course.  PSU seems
> more locked down than ever BTW.  I've gotta be met by an
> official to hand out user logins, as these cannot be
> transmitted electronically.
>
> That's not how it used to be when I taught there before.
>
> We're going back to hand carry and paper delivery for
> more sensitive information apparently, kinda retro.
> I should wear something sensibly 1940s.
>
> A primary technique is to teach enough basic syntax,
> after startup and shutdown practice, to enable "doodling".
>
> This means I get to talk about one thing, while they
> multi-task, checking out arithmetic ops, range(), slice,
> a few string ops, check the error messages.
>
> Chatting about help & dir helps some, but probably
> more useful is I doodle some too, projecting up front.
>
> We cover a few bases, then they doodle while I ramble.
> Maybe I talk about PEPs, go over some history, yak
> about Pycons, poster sessions, user groups...
>
> Then we cover a few more bases and repeat.
>
> Doodle while hearing some talk about open source,
> GNU, GPL, MIT, OLPC... chime in with news and views?
> We'll get to Lightning Talks later (a way for students
> to voluntarily share about projects).
>
> A goal is to develop comfort with simple interactivity,
> you could say "using Python as a calculator".  Saving
> to site-packages, importing the namespace (different
> ways to import) should round out this first section.
>
> In terms of content, things to program around, I tend
> to wander into spatial geometry, but not with any
> coordinates or turtles at first.
>
> I've got this "geometry plus geography" heuristic
> goin' where these are the only two subjects under
> the sun (per posts to mathfuture, a Google group),
> so it's easy for me to frequent this area.
>
> Geometry is thinking (imagination) and Geography
> is the real world (i.e. everything else).
>
> I'm a big fan of "gnomon studies" [0] which includes
> figurate and polyhedral numbers.  'The Book of
> Numbers' by Conway & Guy was influential.
>
> I've already filed hundreds of posts about this in this
> archive, so probably shouldn't get too verbose.
>
> 10 * f * f + 2 is a good one to play with.
>
>>>> [10 * f * f + 2 for f in range(11)]
> [2, 12, 42, 92, 162, 252, 362, 492, 642, 812, 1002]
>
> The initial 2 should be a 1 if you wanna match up
> with Encyclopedia of Integer Sequences.[1]
>
> I like having polyhedra going, via figurate numbers,
> because they're the paradigm "objects" or "action
> figures" of the cybernetic vista.
>
> Figurate or polygon numbers become polyhedral
> numbers, i.e. we go from triangular numbers to
> tetrahedral numbers pretty easily, or squares
> to half-octahedra (Egyptian pyramids).
>
> [ Actually, over on Math Forum, I've got a
> curriculum guy telling me polyhedra just don't
> relate to anything, that he can see, so I realize
> it's sometimes an uphill battle to champion
> their relevance, chemistry and biology
> notwithstanding (all geography in the two-
> subject framework) ]
>
> Any "sim" or screen character may be thought of
> as an animated, multi-faceted avatar, a "puppet"
> of behind-the-scenes software (screen-as-theater,
> one of the oldest motifs, so familiar from television).
>
> However, aside from a few Youtubes (e.g. [2]), other
> static web pages, I'm mostly relying on student
> imaginations to provide the visuals at first.  It's like
> learning to read without pictures, engaging the
> imagination while focusing on a purely lexical
> activity (reading).
>
> I'm pretty adamant that programming is a more lexical
> and/or algebraic activity, and whereas I'm a big fan
> of right brain mental geometry, I'm concerned that
> too many resources pander to an anti-lexical bias,
> feeding student aversion to "straight text".
>
> At some point, it pays to stop trying to make every
> experience some kind of video game.  Better to
> get back to games with words themselves (more
> like crossword puzzles) and cultivate an awareness
> of those.
>
> Messing with fonts may come in handy (in Portland
> we have Bram Pitoyo, a total font head, frequents
> the conferences).  I always like to show off Akbar
> font, mention The Simpsons and Matt G. (from
> around here).
>
> There's a kind of stunting or atrophy of the left brain
> we need to worry about as well (cuts both ways).
>
> That's why I want early "doodling" to be chiefly
> lexical, with no immediate "turtle gratification"
> (nor VPython at first, much as I love to use that
> add-on).
>
> Remember, these are teenagers, not tiny children.
> They likely know how to type some, and won't have
> a problem spelling out words.
>
> Having these "words" (expressions, short programs)
> "laugh and play" i.e. "talk back" because of the
> interpreter environment, is supposed to be a game
> in itself (a kind of "language game").
>
> It's supposed to be interesting to reverse lists (play
> with palindromes), pop a stack, feed a queue or
> whatever.  Look up in a dict.  import cos and sqrt.
>
>>>> from math import sqrt as root2
>>>> root2(4)
> 2.0
>
>>>> def root3(x):  return pow(x, 1.0/3.0)
>
>>>> root3(27)
> 3.0
>
> To uphold my reputation as an "objects first" kind
> of teacher, I'm going to focus at least part of my
> patter on what OO is about and why it was supposed
> to be an advance.
>
> Functional programmers voice their concerns that
> OO is potentially messy, doesn't do enough to save
> us from ourselves.
>
> But the goal was to imitate "the real world" in some way
> (the geographic realm). Knowledge domains naturally
> fragment into "things" with behaviors (capabilities)
> and attributes (properties).
>
> OO isn't a computer thing, it's a "natural habit of
> thought" thing.  Here's one flavor of logic that aims
> to capture "natural language" to some primitive
> extent.  Philosophers please take note (they
> haven't been, mostly).
>
> And it's potentially messy because the real world
> is messy.  The idea of objects with state, with APIs
> to change state, is reflective of everyday encounters,
> adventures in Geography (where even insects have
> state).
>
> I suppose that could be read as a defense of crummy
> programming, but that's not my intent.
>
> We do need to learn about pitfalls and the difference
> between beautiful code and gnarly unmaintainable
> code (the latter more likely what a solo programmer
> will write, and think clear as day -- why we think a
> minimum of two coders per project is a serious
> benefit to all concerned).
>
> What behaviors and attributes do polyhedra have?
>
> Their number of vertexes V, edges E and faces F
> (simple counts) are good examples of attributes.
> Verbs would be "scale" (grow / shrink), "translate"
> (move about, accelerate) and "rotate" (symmetries,
> great circles of spin, axes, cleaving into parts).
>
> Even without doing any graphics, we might
> implement a method called "dual", which appears
> to transform a polyhedron into its dual (I say
> "appears" because in these simple "cave
> painting" examples we might just switch
> the values of V and F, keeping E the same
> --- one line of code basically).
>
> Showing off Google Sketchup might be worthwhile
> at this juncture, even if it's more of a Ruby thing
> (we like Ruby just fine).
>
> I introduce "dot notation" as following these patterns
> (sort of):  noun.verb(args); noun.adjective.  I'm
> influenced by J here, which although more functional
> in some ways, is all about using parts of speech,
> grammar, as a way of talking about the J language.[3]
>
> Language teachers will love computational math
> all the more if it reinforces the importance of learning
> parts of speech, so I figure this is a win-win when it
> comes to inter-departmental relations.  The DOM
> relates to language arts as well.  A lot of computer
> topics are intrinsic to the humanities these days
> (e.g. ConceptNet).[4]
>
> More later,
>
> Kirby
>
> [0]
> http://www.flickr.com/photos/17157315@N00/3195670892/in/photostream/
> http://www.flickr.com/photos/17157315@N00/sets/72157617745459466/with/3195670892/
>
> [1]
> http://www.research.att.com/~njas/sequences/A005901
>
> [2]  http://mybizmo.blogspot.com/2010/07/blog-post.html
> http://www.flickr.com/photos/17157315@N00/sets/72157622797118549/with/3201379449/
>
> [3]
> http://www.jsoftware.com/help/dictionary/contents.htm
> (I'm playing with the idea of using this in my Martian Math class at
> Reed College)
>
> [4]
> http://controlroom.blogspot.com/2010/06/aristotle-was-right.html
> _______________________________________________
> Edu-sig mailing list
> [hidden email]
> http://mail.python.org/mailman/listinfo/edu-sig
_______________________________________________
Edu-sig mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/edu-sig