[Edu-sig] CTL: Computer Thinking Language

michel paul mpaul213 at gmail.com
Wed Mar 4 06:00:26 CET 2009


On Mon, Mar 2, 2009 at 2:20 PM, kirby urner <kirby.urner at gmail.com> wrote:

On Mon, Mar 2, 2009 at 2:20 PM, kirby urner <kirby.urner at gmail.com> wrote:

>This is what math teachers often forget:  that there's no "one thing" that
is "a mathematics".

Yeah, this is what I appreciate about the Pythonic way of thinking.  There
are other schools of thought where mathematics is put into a box and
anything outside of that box is ridiculed.

I prefer an open world.

- Michel




On Mon, Mar 2, 2009 at 2:20 PM, kirby urner <kirby.urner at gmail.com> wrote:

> On Mon, Mar 2, 2009 at 1:41 PM, Jason Axelson <bostonvaulter at gmail.com>
> wrote:
> > As a current college student myself, I feel like chiming in here.
> >
> > 2009/3/2 michel paul <mpaul213 at gmail.com>:
> >> However, it is again more mathematically effective to read "2 + 3 * 4"
> as
> >> "the sum of 2 and the product of 3 and 4", or,  sum(2, product(3, 4)).
> No
> >> ambiguity there!  And this is how you have to think when you hook chains
> of
> >> functions together.  This kind of stuff could be done very early in the
> >> curriculum.  Doesn't have to wait for either advanced math classes or
> >> computer science.
> >
>
> The mental model in Python is 2, 3 and 4 each "know their stuff" when
> it comes to doing these operations, have them internalized ("in their
> bones").
>
> In that sense, translating 2 + 3 to sum(2, 3) is less useful that
> using native Pythonic 2.__add__(3) with __add__ being a verb like
> "eat" (ingest).  "2 eats 3, returns 5 object" is a better image that
> "sum eats a 3 and 2 objects, returns 5 object".
>
> Of course if you're bridging to Scheme, then maybe that's another
> matter.  OO isn't going to be so important, your mental models will be
> different.
>
> However, in the Python head space, we don't so much like the idea of
> "operations" just floating as globals, unencapsulated, outside of any
> number objects.  That's the old paradigm, kind of gets in the way.
>
> And yes, I know it's still quite possible to code and think in that
> way with Python, a forgiving environment.  But in terms of helping
> students master OO, we want the idea of methods *internal* to the
> class definition.
>
>  sum(2, product(3, 4)) means 2.__add__ ( 3.__mul__(4) )  -- like fish
> eating fish:
>
> http://www.efuse.com/Plan/fish-eat-fish-richard-cook-artville-com.jpg
> ( integers = fish )
>
> > Perhaps it may be appropriate to try and introduce prefix notation to
> > students, such as what lisp uses. So instead of "2 + 3 * 4" or sum(2,
> > product(3, 4)) it would be (+ 2 (* 3 4)). Unfortunately, that might
> > make their eyes glaze over, but you could state how it is unambiguous
> > and maybe formalize infix notation for them.
> >
> >> Math teachers often forget, or are unaware, that the ordinary arithmetic
> >> operators are themselves functions.  I think it would be good for math
> >> classes to explore this kind of functional composition for very simple
> >> ideas.
> >
>
> There's not just one overarching model in my model.  Different
> languages and notations, all with a claim to being mathematical, will
> come with different gestalts, core abstractions.
>
> This is what math teachers often forget:  that there's no "one thing"
> that is "a mathematics".
>
> Wittgenstein's notion of "family resemblance" enters at this juncture,
> helps break the spell of "an essence" (so tempting, so wrong).
>
> > Personally I found that being able to think about many math concepts
> > as functions helped me a great deal with managing the complexity of
> > many math courses. Just my 2 cents.
> >
> > -Jason
>
> Finding a model helpful is a good recommendation for sharing it with
> others and I wouldn't want to get in your way of doing that.
>
> On the other hand, if Python is what we're learning, then looking at 2
> + 3 as a way of firing the add method
> inside of an integer, is what we'd like to focus on in many cases.
>
> However, we're not so far apart, as functions are very akin to methods
> and static methods are really quite indistinguishable, not even
> needing a self.
>
> From Oregon Curriculum Network (OCN):
> http://www.flickr.com/photos/17157315@N00/3308514585/sizes/o/
>
> Kirby
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20090303/1c735edb/attachment.htm>


More information about the Edu-sig mailing list