[Edu-sig] CS teaching approaches

kirby urner kirby.urner at gmail.com
Sun Dec 20 19:50:09 CET 2009

On Sun, Dec 20, 2009 at 10:07 AM, Andy Judkis <ajudkis at verizon.net> wrote:
> Two feet of snow on the ground, a good time to respond . . .  I teach high
> school kids, but I really think that most of what I teach should have been
> covered in middle school.
> I'd recommend:
> 1) Having the kids open up computers and taking a good long look at the
> stuff inside.  Talk about what's in a chip, what a printed circuit board
> looks like,what a bus is.  Take it out of the realm of magic, make sure that
> kids know it's just a machine -- albeit a really really fast one.

This is good.


In Portland, we have this thing called the Build Program run by a
nonprofit called Free Geek.  The primary purpose of Free Geek is to
recover and recycle reusable hardware, to rescue it on the way to the
landfill.  People, companies or government agencies discarding
computers take them to this place.

What's good for middle and high school aged students is the Build
Progam depends on volunteers.  They get trained in taking old
computers apart, testing components for quality, wiping disk drives
completely, and reassembling these components into working machines,
many of which go to worthy charities, schools, coffee shops,
nonprofits, or to the Free Geek community store.

Best part:  not only do student volunteers get all this valuable hands
on experience for free, in the company of peers under adult tutelage,
but they get to take home a computer in exchange for building six,
i.e. build five for worthy charities and now think of that sixth one
as yours (though you may not get that actual computer).



> 2) Talk about the history.  Show them some really old computers.  Talk about
> the Analytical Engine. Make sure they know what Moore's Law is.

Yes, and make sure you include Ada and Grace Hopper.  Computer science
is about women, and men.

If these are high school kids, I might point them to Cryptonomicon
(fiction Stephenson) and/or In Code (non-fiction Flannery).

I think the history of computers needs to come through Ada/Babbage,
then Turing and Bletchley Park.  You need to explain about Enigma and
all that, why there was suddenly such an impetus to make digital
computers real, not just talk about them.

Cryptography is an inherently fascinating topic anyway and lots of
teachers use it.  The story continues to the present day through PGP
and RSA.

> 3) Show them some things about operating systems (the task manager, a DOS
> command window) and talk about viruses, worms, zombies, botnets, cyberwar. .
> . stuff like that

Yes, offer practical advice about how to stay safe and play safe.
Encourage high ethics.

In my classes for Saturday Academy (high school), I've put a *lot* of
emphasis on the free and open source story, sometimes screening
portions of 'Revolution OS'.  Linus Torvalds is in Portland and my
contacts in Brussels say Europe is seeing us this way (as a capital of
open source).  OSCON is returning in 2010.

So I make sure to explain how copying and sharing is NOT always
"piracy" and that hackers are not "software pirates" by definition,
unless by "pirate" you mean someone who's resourceful and free
spirited.  Portland is really into pirates of that kind.

> 4) Make sure they know how binary numbers work, and how sound and images can
> be encoded.
> 5) Teach them about the internet -- packets, IP addresses, TCP and IP,
> routers, DNS -- not in detail, just enough to demystify it a little.  (In
> the very first class I taught, I vividly remember one student sputtering in
> frustration, "But what IS the internet?")

The movie 'Warriors of the Net', available on-line, is one of my very
favorites for classroom use.

I showed that at West Precinct (HIllsboro Police, nearby home of Intel
etc.) to high schoolers during a special class in open source culture.

The police cybercrime division was always getting invited to schools
to scare kids about piracy, but knew themselves about the culture of
free software (GNU, Stallman, Ubuntu, Fedora etc.) and didn't like
always playing the heavy.

It's a sad comment on schools of that day that the police felt so
pushed into doing what teachers should have been doing, but the
teachers were all scared of "hackers" and though Python sounded too
scary to ever touch, even with a 10 foot pole.

I don't know how much the attitude has shifted.

I think there's still way to much fear and paranoia around computers
in schools, in part because everyone gets their information from
fictional TV shows and movies and that leaves them victims of their
own imaginations.

Hard information about how things work (really work) is the best
antidote, so I applaud and encourage your focus here (and feel for
that student, who just wanted to what what the Internet is, really).

> 6) Have them do some simple web pages by writing HTML tags with a text
> editor.

Yes, excellent, and talk about CSS too.  I love that web site we all
know about probably, where you just reload the same HTML with skin
after skin (defined separately in the CSS).

Do you have a projector in the room.  I think showing short clips,
movies, projecting web sites, source code, operating stuff
interactively, having students come up to take turns, lighting talks,
makes all the difference.

Sometimes a projector, laptop and Internet connection is far more
practical and affordable, on a first pass, than having every desk
equipped with a computer (either desk top or lap top), a ratio of 1:1.
 Much as we like this latter configuration (it's what I get at
Saturday Academy), it's not always within range.

Also, projector + laptop + Internet is the combo you'd want for art
history, music, geography (Google Earth), just about any topic under
the sun, not just CS.  Don't forget speakers.  Laptop speakers won't
be sufficient.

Tomorrow's classrooms will be more like recording studios, judging
from some of the state of the art high schools in our area.  Portland
is very wealthy in some areas and pours money into education like
there's no tomorrow (which there wouldn't be, if we didn't pour money
into education).

> 7) Introduce them to programming.  I use Python (starting with RUR-PLE) but
> for middle school, I'd do Scratch or Alice.

Yes, I start with Python as well, in IDLE.  We don't necessarily need
any add-ons right away.

There's turtle.py for sketching those plane nets (recent example).
When I do go with add ons, it tends to be all about spatial geometry
(not flatlander stuff) as students come to Saturday Academy with high
expectations, want to see good eye candy, make some themselves.

VPython and POV-Ray have both proved very valuable for this.

I've managed to have the math modules relatively innocent of the
visualization back end (MVC design) so that you can treat VPython and
POV-Ray somewhat as alternative back ends (like using MySQL or

A third very interesting output format is VRML aka x3D.

Python can write everything, just render with a free browser plug-in,
show those polyhedra or whatever.

All the source code is free on the web, with lots of pretty pictures
and clues in the free slide shows.  Using string substitution is key
to making these back end programs readable and understandable.

Playing with Madlibs is a great intro to this feature.  I've noticed
this strategy has caught on with some other CS teachers.

In my EuroPython slides (Vilnius) I make the link from Madlibs to Grossology.

> 8) Have them research some cool/scary things that are happening with
> robotics and AI, and have them give presentations to the class.

Yes, Lightning Talks in front of the class, showing off whatever media
they've pulled together, be that slides, animations, collected images
and Youtubes....  It's important to discuss academic ethics as well
i.e. giving credit where credit is due.  When work is not original,
it's no crime to share it, but be prepared to tell us where it came
from.  Document your work, your sources.  Be generous with your
citations to others.

> To me, the important thing is to get them to not think of a computer as a
> magic black box, but instead to get under the hood and think about how
> things work. (see
> http://extremities.com/pct/index.php?nxt=intro&sub=guyundercar)  The very
> first thing I have kids do is make up a list of things that they wonder
> about -- I'm actually rather proud of that particular assignment:
> http://extremities.com/pct/index.php?nxt=intro&sub=goodquestions

This is a really good exercise and I congratulate you for couching it
in those terms.  As a teacher, it's extremely helpful to get stuff
ahead of time about what students themselves are wondering about or
hoping to get more help with.

The How Things Work component is what's really important a lot of the
time, and it's not just the personal computer on your desk that's
important to comprehend.  We need to explain about larger systems,
institutions, in which computers play a role.  This includes
explaining about social networking software, not making kids simply
guess or imagine what's going on behind the scenes.

Like if Facebook hasn't come up with a Guide for Teachers yet,
containing quite a bit of technical information, as well as lore, then
I'd say this is overdue.  Ditto for Twitter, Myspace and so forth.
Sharing internals shouldn't always be treated like some national
security deep secret.

Short projectables on Youtube might do the trick -- the teacher's job
then, is simply to find them and interleave them into classroom

What I call Supermarket Math is a template for the How Things Work
component in that we go into the operations of a supermarket, talking
about inventory, shipping, ordering, point of sale, accounting.  At
the center of all this is ye old Relational Database.

We have SQLlite, we have at least once computer in the room, lets get
into SQL some, dredge up those Venn Diagrams from math class and
explain their relevance here.  I'm not talking about a full-blown
course for DBAs, just talking about How Things Work.

Then talk a little about MVC and web frameworks.  Seriously.

High school kids will grok it (understand it) and start appreciating
how school is actually beginning to mirror their everyday reality for
a change.

Here's my overview page on said Supermarket Math:


Note that I've got my MVC (model view controller) stuff under Martian
Math because that's where we do the polyhedra.  I actually have an
SQLlite database pre-stuffed with coordinates, for retrieving and
spitting out these polyhedra (either for OpenGL rendering ala VPython,
or for ray-tracing ala POV-Ray, or for a VRML browser --
LiveGraphics3D another good format, used by Mathematica web sites).

> Best of luck -- I'm eager to hear what you come up with.
> Andy Judkis
> Academy of Allied Health and Science
> Neptune, NJ

Thank you for sharing.  I think we have much the same priorities.


> _______________________________________________
> Edu-sig mailing list
> Edu-sig at python.org
> http://mail.python.org/mailman/listinfo/edu-sig

>>> from mars import math

More information about the Edu-sig mailing list