Teaching Computer Science to Kids
I have an opportunity to teach computer science to a number of children at our local homeschool co-op. The age range is 9-12, and the class is voluntary, so the students are a self-selected group.
The trend in teaching seems to be focused on making computer science more engaging and fun. Usually there is some sort of point-and-click interface to let students easily create multimedia presentations and movies without having to type a single line of code. See www.alice.org, or MIT's Scratch.
My gut tells me that although this method would be extremely popular and engaging, it's mostly a waste of time for those who really want to learn the science, and that those students who don't care to begin with probably won't progress much further after you take the fun tool away. It really feels to me like a dumbing-down.
At the opposite end of the spectrum is my idea, which is to develop an extremely simple virtual computer environment where you can see all parts of the computer in a GUI. You can drill down into individual bytes in RAM and set them (and immediate see the result in the case of video memory), you can see the CPU registers change as you step through code, etc. The machine has 64k of RAM and a very simple CPU instruction set.
I'd like to teach using a bottom-up approach in parallel with a history of computing, so the students learn things in essentially the same order as they were discovered. They'll see initially how difficult it is to write machine code, but they'll see for themselves how a simple program calls functions and jumps around in memory, and gain an understanding of binary numbers and arithmetic. They would then progress to simple interpreted and compiled languages.
This is pretty much the way I learned at that age, without much help.
The middle road would be to start with some interpreted language like BASIC or LOGO and teach from there. I think this has the same weaknesses as the newer approaches without any of the strengths.
So am I crazy to want to teach machine language (albeit a simple one) to 10 year olds?
1 comment
[ 2.6 ms ] story [ 13.8 ms ] threadDo kids really care about "really" learning the science? And it's true that a bunch of kids won't ever progress further than making some fun presentations, but what's wrong with that? Not all those kids are going to go on to become computer scientists. For those kids who are really interesting in programming and computers, they'll continue with it.
Creating things is a important part of learning. If kids make fun presentations that they show off to parents and friends, they're gonna work hard on it. Stepping through a program on a virtual computer enviroment doesn't really allow for that.
The class you're proposing sounds like a class I took in college. You're teaching 10 year old kids, my suggestion is to "dumb it down."