[Edu-sig] 'discovery learning' with Python...

kirby urner kirby.urner at gmail.com
Sun Oct 10 04:08:21 CEST 2010

That's cool.

I was hoping my bold assertion of being almost alone on the front
lines would inspire protests from my comrades.


On Sat, Oct 9, 2010 at 6:35 PM, Calcpage <calcpage at aol.com> wrote:
> I've been selling python, SAGE and the Litvin text to High School math and
> compsci teachers for some time too!
> I've been talking up python on the AP Calculus, AP Physics and AP CompSci
> listservs quite a lot actually.  I also promote python on my blog!
> Regards,
> A. Jorge Garcia
> Applied Math & CS
> Baldwin SHS & Nassau CC
> http://shadowfaxrant.blogspot.com
> http://www.youtube.com/calcpage2009
> Sent from my iPod
> On Oct 9, 2010, at 8:33 PM, kirby urner <kirby.urner at gmail.com> wrote:
>> Greetings edu-siggers --
>> The appended thread is from the Math Forum and my role is somewhat
>> tangential i.e. I'm always the only one present quoting any Python.
>> Complete thread in case anyone wants more context:
>> http://www.mathforum.org/kb/thread.jspa?threadID=2154964&tstart=0
>> No one else in the world has the job of promoting Python to K-12 math
>> teachers so directly and publicly, except for the Litvins with their
>> ground-breaking MFTDA (Math for the Digital Age and Programming
>> in Python, Skylit publishing).
>> Per my Grossology slides included in the presentation in Vilnius,
>> there's a recognized way to gain some bandwidth among multi-tasking
>> youth by including stuff that's "gross" or "demented" (see exhibit
>> below).
>> Cartoons often exploit this technique, with adults as well.  There's
>> a whole genre of cartoons considered "sick and twisted" (Bill Plympton
>> an example contributor).  Portland, Oregon has many festivals
>> centering around such content.
>> Such comedic material is apropos per the Monty Python genesis of
>> the name Python.  I've often though of Python's subculture as TV-14
>> and above, meaning we're not trying to compete with the Alan Kays
>> of this world, or with Scratch (which is also fun for grownups, if given
>> permission by their peers).
>> Python takes typing, is not a visual language, takes some lexical
>> sophistication.  There's no reason to feature the same language at
>> all levels or in all circumstances, obviously.
>> Anyway, nothing below is especially "sick and twisted" besides the
>> term "snake barf", which refers to the interpreter's coming back with
>> traceback error messages (raising exceptions) when uninterpretable
>> (inedible) expressions get offered.
>> Thinking of the Python interpreter as this "creature" that responds
>> in a kind of "chat window" is not a bad way to go, given the name.
>> You'll also see more of my "everything is a python in Python", a variant
>> on "everything is an object".  The paradigm object, in having special
>> names (if only __init__ and __repr__), i.e. a "rack of __ribs__" is
>> somewhat snakelike in appearance.
>> Relevant slides:
>> http://www.4dsolutions.net/presentations/connectingthedots.pdf
>> (slides 11, 12 re "everything is a snake", 23, 24 re Grossology).
>> Exhibit: "demented cartoon" (Ren and Stimpy, Aqua Teenage
>> Hunger Force, and Spongebob would be other examples).
>> http://www.youtube.com/watch?v=Li5nMsXg1Lk
>> Having such toons communicating more mathematical concepts,
>> including Python (as one of many machine executable math
>> languages, as Leibniz envisioned), would be a feature of Python.tv
>> (which Holden Web is keeping safe for when the time comes).
>> Kirby
>> ========================
>> Date: Oct 8, 2010 4:27 PM
>> Author: kirby urner
>> Subject: Re: Mathematician
>> On Fri, Oct 8, 2010 at 11:36 AM, Jonathan Groves <JGroves at kaplan.edu>
>> wrote:
>>> Mike and Wayne and others,
>>> I did look up what Johnson and Rising's book "Guidelines for Teaching
>>> Mathematics" (2nd edition) says about discovery learning, and the
>>> book says more about discovery learning than what I remembered.
>>> Here are some things the book does say about discovery learning.
>>> I will not list everything, but here are some of the big ideas I find
>>> that are worth mentioning.
>> Like here's what I might call "discovery learning"...
>> The teacher is projecting in front of the whole class, and enters the
>> sequence below.  She doesn't necessarily talk a lot during the
>> demo, other than saying things like "lets see what this does",
>> "how about this?" i.e. noises associated with doing some inquiry.
>> Students have the ability to follow along and then branch off
>> doing their own experiments.  A time allotment is provided, say
>> 15 minutes, at the end of which students volunteer to come in
>> front of the room, take charge of the projector, and give up to
>> 5 minutes elucidation of what they've learned and/or think is
>> going on, for the benefit of the rest of the class.
>> Here's the scroll (reading program), a real time demo in this
>> case (frozen here):
>> Python 3.1rc1 (r31rc1:73069, May 31 2009, 08:57:10) [MSC v.1500 32 bit
>> (Intel)] on win32
>> Type "copyright", "credits" or "license()" for more information.
>>>>> int
>> <class 'int'>
>>>>> int('3')
>> 3
>>>>> int('3', 2)
>> Traceback (most recent call last):
>>  File "<pyshell#2>", line 1, in <module>
>>   int('3', 2)
>> ValueError: invalid literal for int() with base 2: '3'
>>>>> int(3, 2)
>> Traceback (most recent call last):
>>  File "<pyshell#3>", line 1, in <module>
>>   int(3, 2)
>> TypeError: int() can't convert non-string with explicit base
>>>>> int('3', '2')
>> Traceback (most recent call last):
>>  File "<pyshell#4>", line 1, in <module>
>>   int('3', '2')
>> TypeError: an integer is required
>>>>> int('3', 10)
>> 3
>>>>> int('3',  9)
>> 3
>>>>> int('3',  2)
>> Traceback (most recent call last):
>>  File "<pyshell#7>", line 1, in <module>
>>   int('3',  2)
>> ValueError: invalid literal for int() with base 2: '3'
>>>>> int('1000101010100',  2)
>> 4436
>> New topic.  The teacher enters the following in an editor window,
>> saves to site-packages and then runs:
>> def f(g):
>>   def anon(x):
>>       return g(x + 2)
>>   return anon
>> @f
>> def m(x):  return 2 * x
>> @f
>> def k(x): return x + 2
>> print ( k(10) )
>> print ( m(10) )
>> Here is the output:
>>>>> ================================ RESTART
>>>>> ================================
>> 14
>> 24
>> Students regularly give lightning talks in this classroom.  These are
>> akin to "show and tell", which is a valuable institution at all levels.
>> The standard feature of a lightning talk is it's no more than five minutes
>> (points off for going over), but there's no requirement that it go for
>> that
>> long.  Sometimes a student will come to the front of the room and
>> address the class for a much shorter period.
>> Having students come to the front and take control of the projector
>> is a variation on a theme.  In a standard Math Lab (does your school
>> have one?) any student has the ability to switch what's on her or
>> his workstation to the screen up front.  The teacher may also have
>> this capability, along with mixing controls.  A Math Lab session will
>> typically result in an output recording drawing from several workstations
>> and edited in post production.  Sound may be added.  The growing
>> database of clips is on the school intranet. Fractals alone might
>> account for quite a few gigabytes of storage, with student projects
>> aggregating.  College admissions officers may be granted PIN
>> numbers to view student records, with student permission.
>> Anyway, the question is whether projecting content, not explaining
>> everything, encouraging exploration, giving opportunities to elucidate,
>> followed by some teacher explication, is a 'discovery learning' workflow.
>> To the best of my knowledge, 'discovery learning' is not trademarked
>> and so it could well be, without anyone taking serious objection.
>> You may have noticed that the int function (above) wants you to say
>> what base your number object is in, at which point it returns a base 10
>> result.  int('3', 2) was asking for something the int function can't do
>> (it's not about "converting" the decimal number '3' into base 2 here)
>> whereas something like int('FF', 16) or int('10101', 2) would be perfectly
>> OK, no "snake barf" for feedback (where Python spits back your
>> "animal argument" i.e. raises an exception).
>> Remember "everything is a python in Python" meaning a creaturely
>> object (has behavior and internal state, a self / dictionary), potentially
>> with lotsa __ribs__ (special names) and therefore a spine -- like a
>> snake does.
>> We use a lot of biological metaphors on purpose, given mega-trends in
>> physics teaching these days (math teachers are also welcome to use
>> this free technology, though we understand they're still mostly addicted
>> to calculators).
>> The "decorator syntax" (@) is about taking a function definition and
>> sending it through a wringer of sorts, spitting out a new function of the
>> same name.**    In this example, the input function is modified such
>> that its input argument will get bumped up by 2, before a function's
>> machinery is allowed to do its work.
>> Kirby
>> ** I can't help but think of 'Invasion' the TV science fiction soap opera,
>> wherein people were eaten by creatures in the Florida swamp, then
>> returned, almost themselves (but only almost):
>> http://www.imdb.com/title/tt0460651/
>> - -- if these were beginners, I'd do more on the history of the decorator
>> feature, starting with the idea of properties in classes.
>>> 1.  Discovery learning is a difficult teaching method because it must
>>> be continually adapted to students' questions and comments and what
>>> progress they have made thus far.  We cannot plan extensively for
>>> discovery learning just as we cannot plan extensively in advance for
>>> a discussion; we will not know how the discussion will go or where it
>>> will lead until we actually do it.
>>> 2.  As I had mentioned earlier, discovery learning is not appropriate
>>> for all situations.  One example they give here is trying to get
>>> students to discover a definition.
>>> 3.  The idea of discovery learning is that it helps students find their
>>> own meaning in the mathematical concepts and their own connections of
>>> that concept with their previous knowledge and experiences.  Previous
>>> experiences happen to be one reason why our thinking about a concept
>>> makes perfect sense to ourselves and other students but makes no sense
>>> to someone else; that baffled student might not have had those
>>> experiences
>>> to make that explanation meaningful to him or her.
>>> 4.  Some ideas for prompting students to think more deeply (examples
>>> taken
>>> straight from this book):
>>> "Give me another example."
>>> "Do you believe that, Bill?"
>>> "How do you know that?"
>>> "Can anyone find a case for which John's rule does not work?"
>>> "That seems to work.  Will it always?"
>>> "Have we forgotten any cases?"
>>> 5.  The book points out some cautions to discovery learning (as quoted
>>> from
>>> the book):
>>> a.  Be sure that the correct generalizations are the end result.
>>> b.  Do not expect everybody to discover every generalization.
>>> c.  Do not plan to discover all the ideas of your course.  Discovery of
>>> some ideas is too inefficient.  Sometimes students do not need an
>>> intuitive,
>>> emprical, discovery approach to understand an idea.
>>> d.  Expect discoveries to take time.
>>> e.  Do not expect the generalization to be verbalized as soon as it is
>>> discovered.
>>> f.  Avoid overstructuring experiences.
>>> g.  Avoid jumping to conclusions on the basis of too few samples.
>>> h.  Do not be negative, critical, or unreceptive to unusual or off-beat
>>> questions or suggestions.  However, incorrect responses must not be
>>> accepted as true; and disruptive, nonessential explorations must be
>>> eliminated.  Students should know that their status is not threatened
>>> by incorrect answers.
>>> i.  Keep the student aware of the progress he is making.
>>> j.  If possible, have crucial ideas "discovered" repeatedly or by
>>> different methods.
>>> k.  Finally, each student must recognize why his discoveries are
>>> significant
>>> and how the ideas are incorporated in the structure involved.
>>> 6.  The book gives some examples of ideas that students can try to
>>> discover for themselves:
>>> a.  The difference between the prime numbers 5 and 2 is 3.  Why do no
>>> other prime numbers have this property?  Here is a related one I have
>>> thought of: 3, 5, 7 are three consecutive odd natural numbers that are
>>> also prime numbers.  Are there any other examples of three consecutive
>>> odd natural numbers where all three are prime numbers?  If not, then
>>> why is this example the only one possible?
>>> b.  What do we know about sums and products of odd integers?
>>> c.  Why is 1.999....=2?
>>> d.  What is the maximum number of pieces of pie if a round pie is
>>> divided by seven cuts?
>>> e.  How are the slope and y-intercept of a line related to the equation
>>> of a line?
>>> f.  How is the perimeter of a right triangle related to its area?
>>> g.  What is the number of subsets of a finite set?  (The book does not
>>> say "finite" but should.)
>>> h.  How can the formulas for areas of geometric figures be related to the
>>> area of a rectangle?
>>> i.  What equality properties apply to inequalities?  For those that do
>>> not, can you find conditions for which these equality properties apply
>>> to inequalities?
>>> Here is one I thought of:
>>> j.  Must we use the LCD to add or subtract fractions?  Or will any
>>> common denominator work?  If any common denominator works, can you
>>> see why?  I like this one because I have seen many students who
>>> believe that adding or subtracting fractions using a common denominator
>>> besides the least common one is wrong simply because "that's not how
>>> I was taught to do that."
>>> A comment to Mike Dougherty: In some sense, asking students to discover
>>> the reasoning and logic behind mathematics is discovery teaching.
>>> Sometimes this term refers to getting students to discover ideas and
>>> the underlying logic for themselves such as discovering and proving
>>> a theorem, something similar to what a mathematician has to do when
>>> developing a theory.  Other times it can refer to having students fill
>>> in the details of the reasoning after the teacher has presented the big
>>> ideas and some outline of the reasoning with the details omitted so that
>>> students can try to fill those in for themselves.  In these cases, the
>>> student is not asked to discover theorems but is asked instead to
>>> discover the proofs of them.  It is clear from the examples given above
>>> from the book I had cited that this book uses the word "discovery
>>> learning" or "discovery teaching" in both of these senses.
>>> I don't know if we explain too much, but I often question if we,
>>> including
>>> myself, explain too much too quickly before giving the students chances
>>> to think about and see these ideas for themselves.  That is, if we
>>> explain
>>> too much up front, then we don't give students many chances to think for
>>> themselves.  We also give students the impression that it is okay to
>>> take our word for it, especially permanently rather than just temporarily
>>> for convenience, even if they haven't the foggiest idea of why that is
>>> true.
>>> I don't see a problem with a student who wants to take our word for it
>>> for
>>> the time being, especially if they need to use that result immediately,
>>> if the student is willing to try later to see why that is true.  Of
>>> course,
>>> if the proof of the result is beyond the scope of the course, then that
>>> is
>>> a completely different matter.
>>> Jonathan Groves
>>> On 10/8/2010 at 11:21 am, Michael Dougherty wrote:
>>>> To me, math is almost automatically "discovery
>>>> learning."  Maybe all subjects are but I could argue
>>>> math is more so.  It's just a matter of how much of
>>>> it you want them to discover on their own.  If I
>>>> teach trigonometric substitution or partial fractions
>>>> decompositions, they will still have to "discover"
>>>> the logic of it as they go, even if I completely
>>>> explain the logic to them in my always brilliant
>>>> lectures.  I suppose if I want to give these two
>>>> topics a month instead of a week (collectively), they
>>>> might be able to "discover" it from something closer
>>>> to first principles, but no matter how much I explain
>>>> things they still have to work the problems to
>>>> "discover" what works and what does not.
>>>> As they say, give a man a fish and you feed him for a
>>>> day; teach him to fish and you feed him for a
>>>> lifetime.
>>>> OK, but now they're asking us to let him discover for
>>>> himself how to fish, perhaps out of desperation?
>>>> He'll know some aspects of fishing better than if
>>>> f you teach him, but he'll miss out on a lot of
>>>> details you could have taught him.  And a lot of time
>>>> will be consumed where it did not have to be.
>>>> As he gets older, it's good if we can teach him how
>>>> to find the resources to "teach himself," but in the
>>>> beginning it's better to present a logical context
>>>> and let them work through it.
>>>> But I submit it's still "discovery," that they will
>>>> make working through problems we give them.  The rest
>>>> is arguing about what level we want them to start,
>>>> and how much guidance to give them.  Also, how much
>>>> of it we want to be a group activity.
>>>> So when I hear "discovery learning," I'm hearing that
>>>> they think we explain too much.  In math, that's
>>>> almost impossible, if at some point you make them
>>>> work problems on their own.
>>>> - --Mike D.
>> _______________________________________________
>> Edu-sig mailing list
>> Edu-sig at python.org
>> http://mail.python.org/mailman/listinfo/edu-sig

More information about the Edu-sig mailing list