views:

280

answers:

5

"Tell me, and I'll forget. Show me, and I'll remember. Involve me, and I'll learn."

We all have participated to some experiments with a teacher, a pro or a friend who wanted to make his point and involved you in the demonstration.

For example:

My communication teacher asked me to sit back to back with a friend. He gave him a sheet with a very simple shape on it and asked him to tell me how to draw it. The result was not at all what we have expected: it took minutes, no matter how simple the shape was, and the final drawing did not match the original at all.

We have realized why most of the programming projects die: there are so many ways the communication can fail.

Have you ever experienced such experiments that changed you vision of programming? Can you share it with us so we can give it a try, or teach it to students?

+1  A: 

method for teaching computer science to children computer science unplugged site

video - computer science unplugged

Check these videos too

1 2 3

yesraaj
+7  A: 

Way back in the mists of time ... okay, back in 1983 when I first started studying IT full time, our assembly language lecturer organized us into a representation of a CPU. One of us was the PC (program counter), some of us were registers, some of us were memory and other things. The PC would say, "tick" and something would happen, and then we'd all have to wait until the PC said, "tick" again.

It really helped us to see how the CPU worked, programmatically.

boost
Nice! I did something similar with about 20 fellow students in a digital logic class. Each of us was one simple logic gate. We would place a hand on the shoulder of the "gate" in front of us if the two hands placed (or not placed) on our own shoulders matched the gate condition. Very fun :)
e.James
May have been a little slow for running quake on.
Kent Fredric
+2  A: 

I've used "human LINQ" three times now at different talks - explaining deferred execution, buffering and streaming by having several people in a chain:

  • Someone acting as a data source (starts off with 4 pieces of paper)
  • Someone being an ordering operator (order by length of word)
  • Someone being a projection operator (capitalise word = turn paper over :)
  • Someone being the foreach loop consuming the result

Simplify MoveNext/Current to just "give me the next item" (or say "I've run out") and you can literally see the data flowing. I think it's pretty effective. There are videos around of it - will post links when I've worked out exactly where. (One was only filmed last night, and the other is buried in 5 hours of me talking in Copenhagen. I wouldn't want anyone to have to trawl through that lot to find it.)

Jon Skeet
+1  A: 

I learned sorting algorithms without PC.

I tried most of them on a deck of cards on my table if explanation in book was not enough.

Chobicus
+1  A: 

I add one that I did not experiment myself, but the story did strike me out :

An old manager was given an hour to explain the essentials of his job to fresh students.

He started the lecture by putting an empty pot on the table and asking "Is the pot full, right now ?"

The students answered timidly : "No ?"

The teacher added a bunch of big rocks in the pot, until they fill the top. "And what about now ?"

The students, starting to play his game: "Yes !"

"Are you sure ?", the teacher asked. Then he used smaller rocks to fill the pot even more, as they passed in the gaps between the big rocks. "And now, is it full ?"

The students, not so sure anymore : "Yes..."

"Hum, are you sure ?", the teacher said again. Then he used sand to fill the pot more and more. "What if I ask you now ?"

The students, more carefully : "No... ?"

"I can see you're starting to understand", the teacher eventually said. Then he put water in the pot and made his point : "Now it's full. What can you learn from that ?"

One of the students, daring : "Probably that there is always a room for something else in our timetable ?"

The old man shacked is head. "No. It means that if you want to fill the pot, you must start with the big rocks. You life is like this pot, think about what your big rocks are."

Don't know if the story is true, but that's definitely a great one in programming. Newbies, me first, spend a lot of time tweaking a little CSS property, adding features nobody cares about, trying early optimizations. As the result, the project never ends...

Now I now why we call important releases "millstones" :-)

e-satis
I've heard this story before, although in different contexts. not sure where the original is from. I also don't think we call it milestones cause of that =P
Claudiu
Of course not, this was a joke.
e-satis