Adam Stacoviak and Jerod Santo talk with Tim Bell, the founder and creator of CS Unplugged, a collection of free teaching material that teaches computer science through engaging games and puzzles. They talk to him about where this program came from him, the need for computer science in todayâs K-12 education programs, how CS Unplugged fits in, and how you can get involved.
Tim Bell: Thereâs kind of two ways. One is that the Unplugged thing kind of dives in heard first and covers a lot of broad areas of computer science that you might not think youâd expose kids to. One of the things Mike Fellows was doing is heâd just say âWhat are my post-grad students doing? Iâll go and do that with 6-year-olds, but Iâll try and think of a way to explain it to them.â So we have things like finite-state automata, formal languages, a lot of computational problems that are intractable, just to get the idea thereâs stuff that computers canât do, that sort of thing.
But when it comes down to it, and weâve had to think about this hard when weâre designing curricula for school, is that computers really only do a couple of things - they store data, as you pointed out, and they apply algorithms to your data, and the way you apply an algorithm is you write a program to implement the algorithm. Essentially, you can boil it down into understanding algorithms, data and programming. Weâre a bit more focused on algorithms and data.
[48:06] Of course, the simplest form of data is binary numbers. And again, people will say âKids donât really need to know binary numbersâ and in fact, if you ask anyone involved in technical computing, they probably havenât converted a binary number for years, but they do need to know the difference between a 16-bit and an 8-bit representation, or 1024-bit security and the fact that a 1025-bit security would be twice as good, and things like that when weâre dealing with binary numbers. So itâs the patterns in them that matter more than just knowing how to convert numbers⌠But it is kind of fun.
One of the activities - one of the early ones that was developed, and itâs a real hit - is, to get kids engaged with binary numbers, get about five cards and put dots on the cards. So the first card has one dot on one side, the next one has two dots, and the next one has four dots; it corresponds to the binary digits. And the rule is simply the card is either upside down and you can see the dot, or you can see the dot.
So you lay these out on the table, and the challenge to the student is I want exactly 11 dots visible. You might need to basically say âSo this card with the 16 dots - do you want that visible?â and theyâll say âNo, because itâs too many.â The one with 8 - theyâll look at it and theyâll go âWell, should I take the 8 dots?â If they look at the rest of them, theyâll see that thereâs only seven left. âI wanted 11 dots, so yup, Iâll have to take the 8.â âDo you want the one with the 4 dots?â âNo, that would be too many.â âDo you want the one with 2?â âYes.â âThe 1?â âYes.â
And then just to point out to the student - what theyâve said is âNo. Yes. No. Yes. Yesâ, which is communicating a number only by saying yes and no. And thatâs the whole point of binary, of course; we only need to store two different values. And why do we do it? Is it because people are just geeky, or itâs a secret code, or something like that? Well, the reason is much simpler - itâs just easy to build stuff that stores two values.
Sometimes Iâll ask them to do the multiplication table; you know zero times zero, zero times one, one times zero, one times one, and we stop there and we say âThat is the entire binary multiplication table.â Often, kids will go âOh, can we just use that one? Thatâs so much better than the one we have to memorizeâŚâ [laughter] But it kind of makes the point about why it would be easier to build a machine that works in binary.
But the activity itself is just full of questions you can then ask, like âWhatâs the lowest number?â and the kids will yell out âOh, one.â Then theyâll think about it and go âNo, itâs zero!â The fact that most programming languages count from zero kind of ties back to the fact that the easiest number to represent is zero, the lowest number.
And whatâs the biggest number, and thereâs all sorts of patterns there, like itâs one less than the next bit, and all sorts of things like that⌠And adding one bit doubles the range, and whatnot.
Thereâs endless follow-up activities, but the other one is to use different representations⌠Kids can use sound - high and low notes, which of course ends up basically being a modem⌠And by the way, on the website, if you dig deep enough, weâve actually got some songs that have got high and low notes in them, and if you decode them, theyâve got messages hidden in themâŚ