Kirby Urner urnerk at qwest.net
Mon Nov 22 18:45:14 CET 2004

> Robert writes -
> >
> > 2) You cannot learn an advanced subject without first learning the
> > underlying material on which it is dependant. For example, you are
> > going to find multiplication very difficult if you don't first grasp
> > addition.

I've read Art's reply, which I think details a sensible approach,

However, there's no one route.  I prefer the metaphor of a terrain, and
giving students a map.  One has many trails through this terrain.  You may
walk them all eventually, but there'll be forks in the road, with signage we
hope, and the teacher won't necessarily push in either direction -- up to
each student to choose.

When I taught Adventures in Open Source with Jerritt Collard this summer, we
started with TCP/IP, explaining how it sits on top of Ethernet, the
difference between TCP and UDP, the concept of ports, the concept of daemons
connected to these ports, such as Apache on port 80.  

Even in this domain, one has multiple options, including some which aren't
hands on.  We were in a police station (West Precinct, Hillsboro), and so
Jerritt used these concepts to describe the specific network at hand:  a
gateway server joining three subnets to the Internet, one along each wall of
the room, and one wireless.  He also fired up a packet sniffer so kids could
watch packets coming and going, e.g. in response to an upline ping, through
Comcast (the ISP) of yahoo.com or whatever.

It'll be very common for instructors to inherit a classroom with Linux
already installed.  Although I have subsequently received police permission
to wipe machines and start over, with any distro, during this first run we
simply accepted RedHat 9 and the Gnome desktop as standard.  We didn't go
through the steps of installing a distro, although we discussed it, plus
talked up the dual boot option, for those sharing a family Windows box at

Someday, I'll likely walk into a classroom where it's all Mac OS X, already
installed.  It won't matter much, we'll do what Arthur suggests and open a
terminal session and start learning bash.  BSD-based OS X is bash-oriented.
All the same Unix clone tools are there.  Just the desktop isn't Gnome, it's
Aqua, and it's very appealing.  Judging from trends at OSCON, Powerbooks
will be as popular as Linux boxes among Python and Perl programmers, on
other tracks as well.  I can also teach open source programming on Windows.
True, the OS itself is closed, but in an introductory course, which this
was, we didn't eyeball kernel source or desktop source, except maybe in
passing.  There's lots of free source code to play with on any of these
three platforms.

Pretty soon, we had them inside Python, both in a terminal and in IDLE.  We
did some muscle training on vi, gave a sense of the multiple IDE options.
In a future class, I might have them fire up Eclipse and install the Python
plugin, which is coming along.

One of my first modules in Python involves two version of 'scissor paper
rock'.  It's just a command window loop, with the computer asking for S P or
R, and coming back with its gamble.  Students eyeball the source code while
I explain the logic.  OK, so Python just follows a pseudo-randomizer, and it
loses as often as it wins.

The second version cheats, but only sometimes.  It actually reads the
student answer and comes back with a scissor if it sees paper, a rock if it
sees scissors, with paper if it sees a rock.  The randomizer controls its
answer when it isn't cheating, but also controls when it cheats (and wins).
This algorithm has the effect of giving the computer a statistical edge, and
after a run of 30 cycles or so, the computer is invariably ahead.  However,
I provide a .pyc file only, not a .py file.  It executes just fine, but the
source code isn't there, which is somewhat disturbing.

Welcome, to Adventures in Open Source.  By Saturday Academy (strong rep in
our neck of the woods).  In a police station.  Just a few miles from Intel
(whose engineers love what we do).


More information about the Edu-sig mailing list