This paper had a lot of good stuff in it! The first time I read it, I didn't have any particular goal in mind, it just sounded good, and it was interesting. But this time around, I read it with the intent of applying it to my project. What the paper really helped me understand was how to construct or frame the educational goals of my project, and how to focus the problem down. They do a really good job, I think, of de-constructing what it means to learn how to program.
They start the paper by going over two big myths about learning programming(which they end up debunking!), which are really from two different extreme view points: 1. learning to program is just "learning the facts" of a programming language e.g. syntax, language semantics and 2. learning to program leads to spontaneous transfer of higher level cognitive skills
They also deconstruct what programming skill really is, and the stages of programming skill. Being a skilled programmer, they say, is like being a skilled reader, it involves an array of different skills that you have to use together. And there are different levels at which people exhibit these different skills:
- Program user
- Code Generator (can explain single lines of code and what they do)
- Program Generator -
- Software Developer
The greatest part of this paper, I think, is when they talk about how most of the work on the effects of learning to program that's been done to date, including theirs, has had a problem of level mismatch! They've all been looking for transfer of things that Pea and Kurland have assigned to the higher levels of programming skill to learners who are at much lower level learning skills. Or to put it another way, is it reasonable to think that people who have just learned to program to be able to transfer the higher level concepts they have just learned to other domains, even though this is actually a pretty hard thing to do?
This should help me figure out how to design and assess my manipulatives by further refining my target users and and it is they should know when they're done. I'm pretty sure that I'll be gunnin' to turn my students into level 2 programmers. They suggest that at that level the kind of transfer that should be tested for is different types of programming within a language or transferring from one language to another.
The paper also reminded me that I will probably be creating a domain-specific language that's really good at programming things from a specific domain, be it recursion or whatever it is I chose to do.Kurland, D.M. and Pea, R.D. (1984). On the Cognitive Effects of Learning Computer Programming. New Psychology Ideas, 2(2), 137 - 168.