Hello! My name is Ricky, and I'm a student studying Computer Science at Tufts University.
When I was a junior in high school, a former teacher of mine offered me a job as an assistant at a summer computer camp called the Computer Academy, at Dutchess Community College. I had a blast, so I continued to work at the camp for three more summers, eventually taking over as director this last summer.
From time to time, I asked my students to build a website about the their experiences at camp. This stack of cards, a compilation of the knowledge, experience, and good-feeling I found during my tenure at the Academy, is my turn. Explore what I have to share by clicking on the cards behind this one!
In my web design class, after a few days of learning about how the Internet works and how to build web pages using HTML and CSS, I asked my students to build website about something they're interested in. Most students made a website about their favorite games, books, or movies. Others put together a collage of photos, information, and resources about food or animals. By asking students to make something they're interested, almost all of them had no problem completing the assignment.
One student, Zeke, claimed he didn't have anything to write about. I asked him what he liked. "Nothing." I asked him what he did after school. "Nothing." To any question, his reply was, "Nothing," accompanied by bewilderment as to why I would assume he'd have a single interest.
At recess the next day, when a vending machine malfunctioned, taking a student's money without returning a drink, I found Zeke's project. I gave Zeke my phone and asked him to document the ensuing adventure to get his friend's money back. So we'd never forget the story, Zeke put this together.
Before I taught the Academy's programming class in Ruby, I struggled to find a project appropriate for students with limited programming experience in a language as cumbersome as C++.
My goal was to create a fun assignment that isolated students from the frustrating aspects of the language. Misplaced semicolons and cumbersome function names can easily demotivate first-time programmers.
My solution was to collaboratively build a choose your own adventure game. Using freely-available mind mapping tools, as a class, we outlined a text-adventure game. When everyone was happy with the general outline, we broke it into pieces. Each student was responsible for writing and programming several small scenes, a very manageable task. In the end, I put the pieces together, isolating the students from the arcane parts of the language.
Needless to say, we all had a blast.
Due to its size, the Computer Academy only offered a few different courses. Despite that, some students came back year after year, sometimes taking the same courses multiple times. One of my students, Joe, was in my web design class for the third time. He knew everything that I had to teach him, but I wanted to make the class worth his time.
Inadvertently, I issued him a challenge — to build the world's ugliest webpage. When all was said and done, Joe surpassed even my expectations.
My last year at the camp, students liked to play Super Smash Brothers Melee, a video game for the Nintendo Gamecube, during their free time. Although I rarely play video games anymore, Melee, as it's called, was one of my favorite games when I was younger.
One of my students, Carlos, bet me ten dollars that after practicing over the weekend, he'd be able to beat me in a round of the game. Knowing this couldn't happen, I took him up on his bet, with no intention of taking his money.
After beating him the following Monday, I didn't bring up the bet. I didn't expect or want him to actually pay up. In the end, the joke was on me. Carlos, with the help of his mom, produced ten dollars worth of pennies to give me. It is now a prized possession.
My ultimate goal when teaching children about computers is helping them understand that computers aren't magic. Instead, I want them to leave with the understanding that people built everything in front of them, and therefore, they can understand everything.
With legacy languages like C, C++, or even Java, there's a lot of syntax that students just have to "believe". A simple Hello World program is several lines long in Java, but only one in Ruby.
In preparing a class taught in Ruby, I found a fantastic Ruby front-end for children called Hackety Hack. It was a joy to use, and I recommend that anyone interested in teaching children how to program give it a try.
You can't prepare everything before entering the classroom. Students get bored when they think you're talking from a script. That said, no preparation has consequences far worse than over-preparation.
If you're already spending time preparing notes and exercises, why not make them public? Enterprising students, or their something parents, may want to use them as a reference. If you upload your ideas to the web, you contribute them to the global pool of knowledge. What could be more awesome?
Some sample notes from my last year teaching can be found on the resources page.
Class sizes are always a concern in the context of education. My model of teaching children about technology is largely project-based. That is, students should learn by doing, creating, and building.
No matter how compelling, interesting, or well-documented your lessons are, students are going to need help. If classes are too large, you may not have enough time to sprint around a classroom.