[TOS] Teaching Programming in High School

Mel Chua mel at redhat.com
Wed Feb 17 13:58:25 UTC 2010


> BTW: In our first meeting I mentioned to him the
> Arduino boards and he was not familiar with them.
> He has been using PIC processors for a while it
> seems, but was not very happy with the fact that
> their software has restrictive licenses.

The AVR uses ANSI standard C (so you can use gcc and make and your 
normal good ol' FOSS toolchain) and might make a nice PIC alternative, 
though it requires the same amount of extended concentration and 
grit-your-teeth willingness to debug.

Processing and the Arduino are much easier to explain and get started 
with. Ladyada has a nice Arduino tutorial at 
http://www.ladyada.net/learn/arduino/, and Leigh Honeywell gave a talk 
at OnLinux last year about using the Arduino to hack with even the 
smallest of children - video at http://onlinux.ca/node/151. If you want 
to bridge into hardware hacking, "Physical Computing" is a nice book.

But like Matt said, electronics can be Hard To Debug. (Heck, software 
can be that way too, for that matter.) So making sure you test the setup 
is important - or maybe have the "master setup" itself at school, and 
the students doing their work on paper (so they have to think through 
the design of the program) and able to borrow units to use at home (but 
as a bonus, not as a standard expectation). One of my favorite 
intro-to-programming books (The Little Schemer) doesn't need a computer 
at all.

And a +1 to robots. Robots robots robots!

If you're trying for a "lift the hood" experience, maybe intro 
programming is not the way to start, and the goal should be to motivate 
students to take an intro programming class next - what if you taught 
them how to find and modify the source code for programs they already use?

So, homework like "can you figure out how to make this Firefox menu say 
"Cheeseburger" instead of "Options"? or "change the color of your racing 
car from blue to red." Along the way, they'll have to learn to puzzle 
their way through unfamiliar code, and you can point out "this is an 
if-else statement, you may see it later in CS classes..." on-the-fly as 
they encounter it and need to know it in order to figure stuff out, but 
you don't have to worry about full topic coverage ("oh no we didn't get 
to while loops").

Just thinking out loud.

--Mel



More information about the tos mailing list