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

kirby urner kirby.urner at gmail.com
Sun Oct 10 02:33:40 CEST 2010

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:

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

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:

(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).


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).



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')

>>> 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)
>>> int('3',  9)

>>> 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)

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

def m(x):  return 2 * x

def k(x): return x + 2

print ( k(10) )

print ( m(10) )

Here is the output:

>>> ================================ RESTART ================================

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.


** 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):


- -- 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.

More information about the Edu-sig mailing list