CS Unplugged: Computer Science Without a Computer
csunplugged.org
csunplugged.org
I had a blast and so did the kids.
We had them list some steps to make a pb&j sandwich, and then I, as the robot acted the steps out as literally as possible.
When they said "gather materials", I went around the room and picked up erasers, markers, water bottles; whatever I could find.
When they said "put the knife in the peanut butter" I stabbed the (plastic) knife through the cardboard seal.
When they said "put the peanut butter on the bread", I put the jar of peanut butter on a slice of bread.
After all of that we showed a video of an industrial robot applying sealant, just like we spread the peanut butter and jelly.
At the end we asked how we could have done it better, and one of the kids said "Get a smarter robot"
I'd highly recommend doing something like this for a STEM day, or just for fun.
Lots of frustration about the stupid robot and I guess your school kids weren't much different.
I've never met a man so passionate and interested in the pedagogy of computer science. I'd say that he's one of the leading figures in pre-tertiary (primary and secondary school) computer science education in New Zealand. I think that science pedagogy is a massively underserved field of academia. Everyone wants to create new theories and breakthroughs, but nobody wants to figure out how to teach them.
The way that he manages to use practical demonstrations to teach computer science theories and algorithms is brilliant. It really helps make algorithms click with a lot of students. It was refreshing to have him as a lecturer as opposed to some of the lecturers who were clearly did it because they were required to, not because they wanted to.
That was called "welcome to CompSci 101!" in the first CS course I took in the early 80s. Submit your card deck, wait your turn for the operator to load the deck, an hour later you get to find out that you made a typo and it didn't compile.
> For Hottish, who spends about 30 minutes making these drawings before every class, teaching this way is really no big deal. "Every subject is taught on the blackboard here," he says.
It was awesome to watch him work, he was much faster on chalkboard than we were on paper with better tools and could draw spirals and screws in seconds.
Unlike computers, his equipment never chugged or crashed.
Great penmanship, too. Surreal for this field.
Knowledge, maybe. But when you put them in front of a computer, they can't write code. (Your mileage may vary though)
I'm in my 2nd year, and it's incredible how these teachers teach computer science without computers. The ironic thing is that they have projectors in classes. They even have laptops. Most of my peers have laptops, I think. And still they teach with a blackboard.
Just yesterday, my shell programming teacher wrote out the output of `ls -l` manually, by hand. She literally had it memorized. And said that we have to memorize it too, because of course, computer science is a written exam :)
I never expected to see this kind of response on HN. Some of these people don't know how to turn on a computer, and keyboard typing is a long stretch. You really don't know what you're dealing with here!
The admission process is fully exam based (physics/chem/math). I wasn't asked once, in the entire admission process whether I had ever used a computer in my life. Most parents don't let their kids use computers because they think it will spoil their childhood. I was fortunate enough to have good access to Internet and computers in my home. I admit that I spent a lot of time playing games, but I totally have a better understanding of how computers work. At least I'll be a cs major who actually knows how to code...
- Dijkstra
~ also Dijkstra
Now, calling it "science" at all is problematic if you don't consider mathematics to be a science.
Do people who research computation?
Tim Bell was on Changelog podcast #302 talking about CS Unplugged and mentioned this at some point.
https://csunplugged.org/en/topics/
It starts off with binary numbers (and actually more on the idea of representation and interpretation of data), which is a perfectly good place to start; but why is ECC, of all things, the next topic? Then comes "Kidbots", which is an overview of programming in general, followed by searching algorithms (fair enough), but sorting networks feels like another big jump in topic.
One thing I've noticed in a lot of CS curriculum plans is this "detached binary" phenomenon and the effects thereof; like I said, it's an excellent place to start, with data representation and all the elegant yet immensely powerful implications of it. However, like the sequence here, the next topic is often only vaguely related or something completely different. To use a car analogy, it would be like spending the first lesson of a mechanic's course on the chemical properties of petrol with a brief mention that it's used in engines, and the second on suspension alignment. There's a lack of a coherent "story" that keeps the students focused and understanding "what's next".
The effect of teaching "detached binary" is that you get people who can count perfectly well in it, and will tell you they "know" binary, yet can't figure out e.g. why random 4294967295s (or 542393671s[1]) are appearing in their program's output.
IMHO the next step after learning about binary and data representation is how to actually compute with it. Logic gates, adders, latches, flops, sequential circuits, etc. The observation that one can build counters, automated adding machines, and then automated any operation machines (using data itself as instructions) quickly leads to the development of actual computers and what programming one actually means.
It is unfortunate that this code<>data duality is for many developers only ever encountered in discussions about security vulnerabilities, but it is probably one of the most important and powerful features (not bugs) of digital computing machines, alongside the generic digital representation and interpretation of data. In my experience, misunderstanding of these two concepts are a large source of bugs and confusion among both beginning CS students and long-time HLL developers (Asm'ers are, not surprisingly, far more comfortable with those concepts.)
[1] https://news.ycombinator.com/item?id=13132688 (I urge you to think about this puzzle a bit first ;)
It was not unusual to have coding projects that accounted for maybe 10% of the grade, but it was rarely the focus.