[Edu-sig] Designing CS...

kirby urner kirby.urner at gmail.com
Wed Jun 21 01:04:51 CEST 2006

This tagline gives the plot:

So right off the bat, Gnu Math is in turmoil. Are we trying to visit
the tunnels under Disney World, as I contend, or are we keeping them
blissfully in a bubble, making them think the whole world is as
squeaky clean as Squeak?

That's from the Math Forum this morning.

How much of the gnarly underbelly of geek culture are we wanting to
teach, and at what level?  Jerritt plunged right in with tcp/ip at
West Precinct that time, and I'm thinking that's probably as good a
place to start as any.  Motherboard internals can wait.

So I posted about tcp/ip in my blog yesterday, giving a flavor.  I'm
saying Gnu Math should not avoid the low level.  Consistently and
consequently, I advocate diving into C after Python along a strong CS
track, to understand how CPython is implemented under the hood -- as
well as how to extend it.

Then maybe we'll resurface in Java and/or C# over bridges in the
corresponding Python implementations (Jython and/or IronPython).  It's
not like we have to go over every built-in or library module at the
same level of detail every time.

But hey, now you've got the hang of C, and the way it thinks about
memory (addresses, pointers).  That'll help you solve a lot of
puzzles, at least through some career doors.  And no, I'm not
forgetting about C++ (the basis of wx and many other extensions).

Some will go in reverse (it's a network, not just a sequence):  e.g.
drill down starting in IronPython, and get back to C via the
bytecodes-on-a-VM.  In Mono (an implementation of a shared
ANSI/ISO/ECMA type standard), the target bytecodes are prespecified,
and provide a shared platform for many languages. Guido invented his
own bytecodes for CPython, a unilanguage VM, when the whole idea of a
VM was still quite new, and an advance over the early "interpreter"
idea -- like what bash does.

BTW how're things coming with Parrot?  I'm soo out of date.

Anyway, I'm for using Python to awaken self-selecting "users" out of a
blissful ignorance (however comfortable) and start getting them
oriented to the plumbing that makes it all work.  Via Python, you have
the opportunity to move from "user" to "hacker" perhaps by way of
"gnubee" (as in "student of gnu math").

In the gnu world, we don't hide the fact that the low level stuff gets
ugly and that ugly hacks exist.  Engineering is just like that, and
there's no shame in admitting it, showing it, and inviting fresh
solutions.  There's also just a lot of ancient working machinery, not
ugly per se, but still rather complicated and ornate.  We want to show
that off too.


More information about the Edu-sig mailing list