[Edu-sig] Politics and Python in Education (meta on list charter)

Paul D. Fernhout pdfernhout at kurtz-fernhout.com
Sun Jul 22 07:58:01 CEST 2007

Peter Bowyer wrote:
> In the context of deploying Python as a teaching aid (or the language
>  for a Computer Science course)  I don't give a damn about what 
> education *should* be.  I want to hear the approaches others are 
> finding successful, I want to hear what people are doing/planning to 
> do and their ideas.  I don't want a load of theoretical talk - I'll 
> join another mailing list for that.

OK, let's talk specifics of a CP4E-like project and its limitations.
Consider one that is mentioned in the CP4E proposal (though somewhat
dismissively) -- DrScheme, or as it is now, "Teach Scheme":

"Teach Scheme" is IMHO (arguably) currently the most successful
worldwide project to bring a dynamic computer programming language into
the classroom. [OLPC (carrying Python) might someday soon eclipse it,
but that still remains to be seen. Same with the Shuttleworth
Foundation's noble effort. ]  The Scheme effort is more advanced and
organized with more integrated pedagogical content about teaching
programming than Python/CP4E. See for example:
  "How to Design Programs: An Introduction to Computing and Programming"
  [Free Scheme book, problem sets, solutions, "teachpacks", etc.]
It has an IDE built specifically both for learning programming and for
advanced development supporting multiple language levels.
And, unlike how they are described way back when in the CP4E proposal as
"The focus of TeachScheme is on a relatively narrow audience--college
students...", at least now the Schemers say "Teach Scheme" is "Specially
designed for high schools", see:

Consider the preface to their book _How to Design Programs_:
"Our claim that everyone programs or should learn to program might
appear strange considering that, at first glance, fewer and fewer people
seem to program these days. Instead, the majority of people use
application packages, which don't seem to require any programming. Even
programmers use ``program generators,'' packages that create programs
from, say, business rules. So why should anyone learn to program?
The answer consists of two parts. First, it is indeed true that
traditional forms of programming are useful for just a few people. But,
programming as we the authors understand it is useful for everyone: the
administrative secretary who uses spreadsheets as well as the high-tech
programmer. In other words, we have a broader notion of programming in
mind than the traditional one. We explain our notion in a moment.
Second, we teach our idea of programming with a technology that is based
on the principle of minimal intrusion. Hence our notion of programming
teaches problem-analysis and problem-solving skills without imposing the
overhead of traditional programming notations and tools. ...
No one can predict what kind of application packages will exist five or
ten years from now. But application packages will continue to require
some form of programming. To prepare students for these kinds of
programming activities, schools can either force them to study algebra,
which is the mathematical foundation of programming, or expose them to
some form of programming. Using modern programming languages and
environments, schools can do the latter, they can do it effectively, and
they can make algebra fun."

Sound familiar? Great minds think alike in some respects. :-)

The "Teach Scheme" project even offers free summer workshops to
But, notice on that free workshop page the first *hint* of a systemic
school-related "educational politics" problem on that page, where they
write: "We also welcome high school teachers who cover at least one of
computer science, mathematics, and the physical sciences. We ask that
you first contact your school to determine whether they will allow you
to make curricular changes based on the summer course. You should find
out what obstacles you will face from your school if you decide to adopt
this curriculum."

Odd, isn't that? Here is wonderful content and software implementing
some of the core goals of CP4E, all for free to the end user, labeled by
the authors as "specially designed for high schools", with
presumably High School teachers so interested in using it they are
willing to take the time to attend a week-long summer workshop so they
can help their students learn using the best tools for their own unique
situation, and yet, this group throws out a wet blanket warning to put
out the fire in those teachers' eyes? Surprising, or is it? I can only
speculate on the ocean of tears motivating that warning.

So, for all that high quality free content, those specialized teaching
tools, those person-years of dedicated work, and so on, (pursuing a lot
of the CP4E mission but in Scheme "clothing" :-), in the end, the best
they can (humbly, and presumably accurately) say on their web site is:
"The past decade has seen significant changes in the design and teaching
of introductory computer science curricula. The TeachScheme! Project was
at the vanguard of this change. The result is in use at hundreds of high
schools and universities, on nearly every continent, and some companies
have begun to employ the resulting software in their work."

I admire the PLT Schemers, and they do great work and seem completely
dedicated to similar goals to CP4E, and are polite and inclusive
and accommodating and smart, but after about a decade of great
effort with sustained grant funding, based around a fantastically
flexible cross-platform Scheme, in total expending far more effort than
Python's edusig or CP4E by an order of magnitude or two, they are only
reaching (at most) *hundreds* of high schools? There are literally 23000
high schools in the USA alone
and probably several hundreds of thousands total world wide.
I'd suspect computer programming is likely taught in some form in most
every one of them. Something deeper is wrong here than *effort* or
*technique* in explaining "why Johnny can't code"
(or more, why Johnny can't code *dynamically* with powerful tools)
when all that excellent "Teach Scheme" effort is apparently just
running into a barely movable brick wall. And, no, I don't think it is
"Scheme" specific, or at least not in a way which would give Python any
advantages over, say, Java or C++ or Visual Basic -- all with bigger job
markets. I feel the answer to why Teach Scheme has had limited adoption
in High Schools involves that "hint" above on their workshop page.
Should not the Python's CP4E and edu-sig be able to learn something from
"Teach Scheme's" experience? Or should such a Python-based effort
blunder along until it too ends up putting up the same warning on a
CP4E "free workshop" web page someday?

To be absolutely clear, this is not to knock "Teach Scheme" (or their
recent embracing of applying their techniques to Java; their ideas could
just as well be used with Python too). I admire them, even as a model
for CP4E to look towards for good ideas to bring into Python. Reaching
hundreds of schools and getting them to embrace powerful tools like PLT
Scheme, even if it took a decade of hard work, is IMHO still nothing
short of a well-deserved *miracle* and money very well spent.
After all, even reaching *just* hundreds of high schools means helping
possibly tens of thousands of kids a year, and that means a lot if you
are one of those kids whose lives are greatly improved. Still, where
does that leave the other several hundred million kids who "Teach
Scheme" probably cannot reach for reasons that have little to do with
effort or quality?

Here is their overview, which is a statement similar to what many
here probably would agree with for compatibility with Python/CP4E: "The
Project wants to turn Computing and Programming into an indispensable
part of the liberal arts curriculum. Computing and Programming teach
skills just as fundamental as, and closely related to, essay writing in
English and problem solving in mathematics. Students who learn to design
programs properly learn to analyze a problem statement; express its
essence, abstractly and with examples; formulate statements and comments
in a precise language; evaluate and revise these activities in light of
checks and tests; and pay attention to details. This benefits all
students, not just those who wish to study computing. For students who
want to pursue other disciplines, this curriculum shows how they can use
computing to model the phenomena they will encounter elsewhere."

That last sentence sounds a bit like Kirby's "gnu math", doesn't it?
Or Art's PyGeo?

People can and do talk here about what works in a progressive classroom
using Python and dynamic objects. It's a good thing to do that.
There should always be a space for that; to the extent any of my posts
here distract from that, I am sorry; I could see how another new list
dedicated to that might make sense -- one narrowly focused on Python in
the conventional classroom, like school-sig at python.org (which perhaps
would be restricted to full-time school teachers, so not open to posting
by me or the late Art or perhaps even Kirby (even as he has a lot of
great stuff to say on that topic. :-) But, as inherently worthy as
it is to make happy  a few dozen or even a few hundred Python-inclined
educators on edu-sig and their students who live in progressive school
districts, is that really the start of a movement, or is it more just a
tiny oasis of sanity?

Even adding together the "Teach Scheme" effort to Python's CP4E -- we're
talking essentially (on a percentage basis) just a hair's width above
*zero* percent of classrooms which are embracing a CP4E-like ideal --
after a decade and probably *millions* of dollars (total) and dozens
of person-years (by smart and motivated people). Curtailing
discussion here on why this is the case just seems to be ensuring this
near zero percentage won't change much for Python -- even as I'll admit
it probably *will* make the people already using Python in the classroom
happier for the moment (thus some of the +1 comments).

Essentially, the few educators lucky (or politically skilled) enough to
find themselves in progressive classrooms find and use Python/CP4E or
"Teach Scheme" or something similar (Squeak?) and they form the majority
on edu-sig. The rest, like my school teacher relative, might possibly be
fired for installing Python or Scheme and so stick with whatever is on
their computer (typically stuff sold to their district by high powered
marketing from commercial companies) or what runs in a locked-down web
browser. The browser is the most approachable of those two, and that's
why Crunchy is such a great idea as long as schools don't have to host
the server, or why Java or Flash based IDEs (including potentially
Jython) have some technical promise in acceptability for schools.
But even then, even if there was a universal free Crunchy server,
or a PataPata Jython-based Swing IDE running as an applet and saving to
a free server, then such tools may run right back into the curriculum
wall hinted at by the Schemers above (or by Kirby previously).
But, admittedly, by the nature of self-selection, these problems do not
concern most of the people who join the edu-sig list -- even as they do
greatly concern the rate of adoption of Python as a vehicle for
school-based education worldwide. But where else in the Python universe
to discuss them?

Education and schooling are not synonymous. Schools ultimately serve the
state; education serves the individual; school teachers who truly want
to educate are often caught painfully in between. Is there another way?
Is there perhaps a way people who have day jobs in schools can make a
bigger difference with their spare time? Unlike PLT Scheme, Python has,
for many reasons, a large installed base. There are likely hundreds of
thousands, if not, by now, millions of people around the world who have
installed Python on their own home computers and typed:
  print "hello"
(and then most likely stopped, either overwhelmed, or underwhelmed...)
The OLPC project will put laptops in the hands of millions more,
and those laptops will presumably be accessible outside of the school
context. So could then focusing on "education" and Python in a *home*
context then be a much longer lever with which to Pythonically move
the entire "educational" world (as opposed to just the essentially
immovable "schooling" world, which is what is *currently* mostly
represented on edu-sig)? Even schooled kids who play with a
computer at home might learn more about programming and the liberal arts
ideals articulated above by the Schemers in that context, if
the Python-powered experience seemed more attractive than, say,
watching TV or playing WoW or hanging out on MySpace.

And yes, the home context is just what I have spent person-months coding
towards for Python with PataPata, so it's not just hot air. And I
appreciate the positive comments in the past from people on this list in
helping improve that experiment (even as it is shelved for the moment).

--Paul Fernhout
[This does not mean I'm about to jump ship for PLT Scheme; I have about
a ten year investment (on-and-off) in using Python (and Jython) and I
would like to see Python succeed in the educational space, especially
with OLPC XO1 in the wings -- even if, sigh, (like it seems now for
every other major computer language in the world), the PLT Schemers have
already done work on "Edit and continue". :-) See:
  "Restartable Applications for PLT Scheme"
That's a good reference document even for Python, since, predictably for
Schemers, they have developed a very general solution: "Online code
patching and program checkpointing for replay have both been explored
and implemented separately. Moreover, many of these systems are designed
around a specific language or platform. We present a portable system
where programs may be checkpointed, reified, and resumed, possibly
elsewhere and possibly with updated code." Hopefully, like when I tried
to bring a Pythonic idea to Scheme:
we may someday see one more Scheme-ish/Squeak-ish/VB-ish idea like this
in Python.]

More information about the Edu-sig mailing list