“Hello, my name is Mr. Farmer and I am a computer scientist. Who thinks they know what a computer scientist does?”
“You use science to work on computers.”
Well, I suppose I should have seen that coming.
This week I gave my “I’m a scientist” lesson. Usually when I tell someone I study computer science, they assume that means I build or fix computers for a living. But what I am really interested in is programming languages and tools for working with them. To quote Edsger Dijkstra: “Computer science is no more about computers than astronomy is about telescopes.”
My inquiry-based lesson plan had the students working in groups to create instructions for building a small Lego structure. I chose Legos because they are fairly abstract but still “hands on” enough to engage the students. My goal was to get them thinking about formal languages for describing how to build/compute something.
After 15 minutes, I had each group dismantle their structure and pass the pieces and instructions to another group, which then had to rebuild it. Afterwards, we compared the results to pictures of the original structures. There was rarely any resemblance.
The idea was to show that instructions in natural language are usually ambiguous or poorly specified, and depend greatly on context. I feel like this came across strongly to each class, especially as we compared the results. When I asked what had gone wrong, they had great answers, and we explored as a class why phrases like “on top of” and “the blue brick” were too ambiguous.
Next we worked on creating a formal language for describing how to build a Lego structure. This part of the lesson was more hit or miss. One class had great suggestions for describing shape and position using a coordinate plane. Another class stayed focused on the fact that Legos usually come with picture-based instructions, so I spent considerable time discussing why Computer Vision is a hard problem.
I certainly learned a lot about managing a classroom of eighth graders. I can now yell the words “Voices Off” like a pro. Keeping them focused and engaged can be tiring, and my teacher was very helpful by suggesting some adjustments I could make to streamline things. Little things like giving all the instructions before splitting them into groups made a huge difference in the amount of time it took to get everyone going. Also, being explicit about what I was trying to teach them (designing a programming language) at the beginning helped keep them focused.
Overall I think the lesson was a success! We’ll see how their “homework” turns out next week. (I asked them to use the language we developed in class, or one they create, to design their own structure.)