We in computer science education have long argued about how to start the first course. "If they just see X first, they will understand everything in terms of X" where we might replace X with objects, functions, or recursion. We express concern about what will happen if they don't see the right stuff first. You may recall, "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”
I don't know if any of those beliefs about "what students need to know first" were once true, but I'm quite confident that none of them are true today. There is no first. There is no objects-first, functions-first, hardware-first, or non-Basic-first. No, I'm not suggesting that there already is computer science in high school -- there are way too few teachers and classes for that to be true, on average. Rather, in a world where students live with Facebook and WiFi and email, they most certainly have theories about how computing works. There's no way to get them before they make up their theories. By the time they decide to study computing, they have them.
Leigh Ann Sudol-DeLyser had a nice paper at last year's Koli Calling conference, where she asked students to talk about the computing in their lives, then she tried to figure out which data structures they were already thinking about. For example, students already realize that a Facebook newsfeed has the newest information on top, and the oldest disappears off the bottom -- sounds like these students already recognize a queue, even if they don't know the term yet.
I thought of this looking at Carsten Schulte's ITICSE 2010 paper, on studying student perceptions of difficulty in an objects-first vs. an objects-later class. This is a follow-up to his earlier ICER paper where he reported no learning differences between an objects-first and an objects-later class. While I've heard complaints about Schulte's analysis methods, I found his experimental set-up to be as careful as one could possibly be. The only difference between his two classes were the order of topics. Objects-first vs. objects-later doesn't matter, but neither does any other -first. His results are really not surprising. We already know that the sequence of topics in a curriculum rarely makes much difference in the learning. Students are really quite at getting by with less knowledge, and filling in the gaps as new information comes in.
It's an important open research question: How do students understand the computing around them? What theories do they have? They might not have any -- until an error occurs. How they respond to that error suggests what kind of computational model they have. For example, watch a student do a Google or Bing search, and then revise it to get better results. How did she revise it? What did she add to get a better result, and why did she think that that would work?
We know something about how novices develop naive theories of computing. John Pane's research shows us that novices tend to develop declarative explanations of software that is driven by events, and don't seem to develop notions of objects at all. The "Commonsense Computing" group has shown us that novices can create algorithms for a variety of problems, though that doesn't really tell us how they think software and software development works in the world around them.
We are now in the same position as physics (or biology, or chemistry, or other science) educators. Students have theories about how Wii controllers, voicemail menu systems driven by spoken voice commands, touch screens, and Google/Bing search work. If these novice theories "mutilate" their minds, then it's done, it's happened to everyone, and we'd best just get on dealing with it. There is no chance to place a theory in their minds before they learn anything else. We have to start from where the students are, and help them develop better theories which are more consistent and more correct theories. There is no first, but we can influence next.
No entries found