I had an interesting experience recently. I agreed to run a session on computer science for the STEP students (Science and Technology Entry Program) at Union College's Kenney Community Center. The range of students was large, from 7th to 12th grade. Usually in a session like this I start by asking two things. First, in what ways are computers already in their lives? Second, what kind of problems do they think computers can help solve? There were lots of interesting answers to both questions, and I'm always intrigued there are many computers in their lives that kids (and adults) don't think about. It's also fun to get sidetracked by discussion about user interfaces -- go heat something up in your microwave, for example, and contemplate the fact that you can run it for 99 seconds, but 100 gets you a minute!
My overall goal is to try to get the kids to think about problems that are not obviously numeric in nature. This allows us to talk about the dual challenge of figuring out a solution to the problem and then figuring out how to get the "data" into the computer. Of course, I want things to be fun too! I have two aids I typically use -- SET (a visual perception card game) and 3D Squares matching puzzles (unfortunately no longer available for purchase). These lead us to talk about how a human might solve a problem versus what we would have to tell the computer to do. And then there's that pesky question about how to get the SET cards or the puzzle pieces "into" the computer. This is where things got interesting.
I had asked the students, as they introduced themselves, to tell me what sort of prior experience they had had with computers. Just about everyone one had done something formal either in school or in a camp setting. Several of them had programmed in Python, at least one knew some Java, several had done robotics work. But as a group, none of them seemed to have learned anything about data representation inside the computer. Furthermore, though many of them were gamers, that experience did not seem to keep them from being surprised that you could come up with ways to represent cards or puzzle pieces inside the computer in ways that would allow a program to reason about those entities in the same ways that a human might. Certainly I don't expect K-12 CS education to get deep into mechanisms for data representation, but I do expect that today's students, who as a cohort carry around devices that hold sound files, image files, and video files, should be a bit more facile with the idea that other entities, like cards and hard plastic puzzle pieces, could also be represented in some way inside the computer.
We wrapped up with a quick overview of Traveling Salesperson (always fun to ask kids where in the world they'd like to go) because I like to prove to them that, as amazing as computers are, there are still problems that computers cannot solve. That concept also seemed quite surprising to them.
As a snapshot of the state of K-12 CS education, my experience wasn't particularly encouraging. But it does make a strong case for both the coherent curricula and the formal professional development on which many in the CS community are working. I'm ever optimistic that as I continue to do these sorts of sessions I will begin to see evidence of the impact of new curricula and better trained teachers. Stay tuned!