4 ms·
Ask HN: What about computers or software would you teach to urban 3rd graders?
I've been joking about coming in and teaching them hash tables (using something like filing cabinets). I think they could grasp it, but I don't think it's interesting enough to grasp the students.
- TallGuyShort 17y agoThat's about how old I was when I learned BASIC. You probably don't want to teach them something really specific - but something like a simple example of programming would pique the interest of any student that was so-inclined. That's my recommendation. Maybe a little Ruby or something?
- tiffani 17y agoTeach them how to make a game of some sort. Something really simple like hangman in BASIC would teach them a few different things all at once and still have a fun result.
- derwiki 17y agoWould you really recommend BASIC? That's what I learned in, but I really feel like Python is just as intuitive -- and if they stuck with it, useful.
- davatk 17y agoOne option would be Scheme with Bootstrap (http://www.bootstrapworld.org/ http://www.bootstrapworld.org/). It's a middle school program, but you could probably strip it down for third graders.
- bkbleikamp 17y agoWhy not JavaScript? It requires no command line knowledge and runs in any modern browser. They can create games, easily install libraries or frameworks by including another JS file, etc.
- abossy 17y agoI see a few suggestions for languages. I would avoid languages; instead, go with something like the Scratch project if you want to demonstrate concepts programmatically: http://scratch.mit.edu/ http://scratch.mit.edu/ I recently researched languages for a programming curriculum that was to be taught to Latino high school students, and concluded that Scratch was the best choice. My reasoning is that most students you teach at such a young age will never pursue programming again, and bombarding them with the syntax that 'practical' languages use quickly leads to frustration. I'm sure a lot of people here will say, "I learned such-and-such at such age," but this is a self-selecting group for interest and natural ability in programming. Given a choice between high-level languages, you can choose Alice, Greenfoot, Stagecast, Lego Mindstorms, etc. but Scratch is the clear winner. In terms of high-level concepts, I think understanding the logic behind software third graders use every day is important. Talk about how Internet requests are routed and returned; how social networking software interacts with a database; how cell phone calls are made; how keyboards poll for input. Understanding these algorithmically requires no programming expertise and not even a lot of expertise on your part to explain. It's simply a matter of breaking down the problem and thinking about it systematically. Your example explaining hash tables with filing cabinets is fantastic. Sorting can also be explained with filing cabinets. There's also the classic "how to teach a robot to make a PB&J sandwich," of course, to get their thoughts flowing.
- derwiki 17y agoGood suggestions! I think "how social networking software interacts with a database" might be a little over their heads -- most of them don't have computers at home and are too young to be using social networking software anyway.
- conesus 17y agoThird graders are 7-8 year olds. They are probably reading Beverly Cleary's Ralph and the Motorcycle. Their ability to comprehend negative numbers does not yet exist (for the vast majority of them). At this age, children learn best with a story. They can follow a clear linear path from beginning (statement of characters), through their problem, and unto conclusion. If you want to have an impact beyond having everything go over their heads, make a show and tell (everybody loves pictures and something to look at), and if you want to wow them, show them something they haven't seen before. That part won't be hard. Let them touch it, if you bring something in. Explaining anything more abstract than locations will probably fly over their heads. Sure, some are precocious and will grasp a hash table, but any collection of children, especially urban kids, is bound to be difficult to get them to understand anything more complicated than a toaster. My suggestion is to start with something physical, like a breadboard if you have one, and show how changing wires can influence the lighting of LEDs. Doing this will be far easier to capture their attention than something like decomposing the web stack in a console (which is fascinating if you have the background to appreciate it).
- mattj 17y agoStart out with a simple game, like hangman or something else w/ clearly defined rules and gameplay that mostly depends on guessing. Have people play it a few times, and then have everyone come up with and write down the rules. Emphasize the writing things down formally part, since that's the most basic type of programming. Have them play the game again, but this time using the rules they defined. You could give out awards for the kids who find errors in the rules. Try a different game (tic-tac-toe? rock paper scissors?) and repeat the exercise. Once they've figured out that, give them a bare-bones vocabulary (eg something like python, but don't tell them it's a programming language) to write the rules in.
- Timothee 17y agoI think I would approach that with a game or something very visual (see Processing?), and work with them in defining what things they want to see happen in terms of instructions or pseudo-code. For example, you could start with the idea of a game like a simplified OutRun and brainstorm about what should happen. Well, you want to be able to change lanes, right? You would want to have cars coming your way, the speed increases as you go, etc. so that you end up with a list of things to happen that can be translated into code that does what they wanted to do. I'm not sure this is a great example, but in principle, it would be to make them walk through the idea of defining what should happen in a program. To me, I don't think that the language matters, I don't even think that they really have to interact with the language at all or a very simple and specific language. What's important is to understand the process of: this happens ("I press the left arrow") so that happens ("the car moves to the left"), from which you can introduce conditions, loops and more. As a starting point, you could also ask them about what software they use often and see if you can build something very simple around the same core concept.