I agree with your analysis. I had the same What?!? reaction, then realized that it's just understanding coming in pieces. They're not willing to question "x = getX(pixel)" while they focus on the new parts.
I have a blog post I'm working on (scheduled to come out two weeks from today) on characterizing student understanding of notional machines, based on a recent Dagstuhl Seminar I went to. I'll share that with the group when it's ready.
From: John Maloney <
****************>
Sent: Monday, February 29, 2016 3:58 PM
To: Guzdial, Mark
Cc: Cathleen Galas; Communications Design Group
Subject: Re: [cdg] computational thinking, school math, NY Times article
Hi, Mark.
Thanks for this story. It's an interesting insight into the thought process of beginning programmers.
My first reaction was to be horrified at the "superstitious thinking" of those students.
Then I started thinking about total beginner situations that I've been in -- such as learning to make reeds for my dulcian. There are dozens of parameters that determine whether a reed will work well. It's a huge design space, and when you've made only a few dozen reeds you've only scratched the surface. Thus, when you do manage to make a reed that works well, you try to reproduce that success by doing everything in the exactly same way and keeping all the parameters the same, even though you're fully aware that some of the parameters don't matter. One reason for my resistance to exploring is that making a reed as non-expert is an investment of several hours of work, and you don't find out until close to the end of that time if the reed is going to work. Failed experiments are costly.
I think the psychology of a beginning programmer is similar to that of a beginning reed maker. They've learned some building blocks that work for them. When tackling a new problem, such as the Japanese flag problem, they'd rather focus their attention on the new aspect of that problem. Not being entirely sure which things do and don't matter about "x = getX(pixel)" -- and perhaps having had experiences where a small syntax error or typo lead to hours of frustration -- they take a conservative approach and use this building block verbatim.
As a beginner grows in experience, they start to discover which things do and do not matter. With increasing confidence in their ability to solve problems, they start to take chances, to experiment with parameters, and learn alternate ways to accomplish the same task. As Neils Bohr wrote, "An expert is a man who has made all the mistakes which can be made in a very narrow field." The process of becoming an expert simply takes time. Our job as educators and builders of systems for beginners is to help beginners make "mistakes", gather experience, and build their confidence more quickly.
Blocks languages like Scratch may speed up this process, in part by removing a whole class of frustrating typographical and syntax errors that can be extremely costly for beginners, and in part by supporting rapid and low-cost experimentation. Scratch beginners are just as likely as any beginner to cling to techniques or code fragments without fully them, but I haven't seen Scratch beginners manifest the particular phenomenon you've described: bonding to particular variable names. If you get a chance to teach your media computation course using GP, I'll be curious to know what differences you see.
-- John
On Feb 29, 2016, at 2:56 PM, Guzdial, Mark <
****************> wrote:
> Thanks for sharing these, Kat!
>
> I had an experience with my students this morning that connects to this question. I wholly believe that we can use computational environments to encourage development of numeracy. I've been thinking about how we get students to think at the meaning-level and not just the notation-level.
>
> After lecture (big -- 164 students) on Monday mornings, I go work an hour at our course "helpdesk" where students come up with their homework questions. That gives me chance to work with students 1:1 (or close).
>
> My students are currently working on a problem where they're trying to take an input picture and make it look like a Japanese flag: Make the background more white, and put a red circle in the middle:
> <pastedImage.png>
>
> Students are having trouble drawing the red circle in the middle. The assignment recommends taking a brute force approach: consider each pixel in the picture, and if it's within a radius from the middle, make that pixel red. The assignment gives the students the formula for distance between two points:
>
> <pastedImage.png>
>
> I was working with two students who both came in struggling with this same problem. I got them to define the center point (in Python):
>
> x1 = getWidth(picture) / 2
> y1 = getHeight(picture) / 2
>
> No problem. They were with me that far. They knew how to write a loop for all pixels:
> for pixel in getPixels(picture):
>
> No problem. Then I told them to get the coordinates of the given pixel. They each wrote:
> x = getX(pixel)
> y = getY(pixel)
>
> I said, "I want to make it obvious to you how to use the distance formula, so why don't you call those variables x2 and y2."
>
> Both students stopped and just stared at me. One said, "But, x is getX(pixel)!"
> "Sure, but that 'x' is just a variable name. Let's call it x2."
>
> They just looked at each other, thanked me for my time, and went off to work together at another part of the lab. They had seen the line "x = getX(pixel)" so often that they treated it like a magic spell. It could only work if you said it exactly right. I looked in on them later, and they *did* eventually get it. But they used x and y, not x2 and y2.
>
> I was surprised at their hesitancy. They understood how assignment worked in other contexts, e.g., they had no problem setting x1 and y1. But they put their trust in the notation and in details (like variable names) that don't really matter. They did figure out in the end -- they were successful at making the Japanese flag effect using the distance formula.
>
> These students are developing computational literacy (like the development of numeracy), but it's in pieces, in fits and starts. They rely too much on the surface level features yet.
>
> The story of these students feels similar to me to the NYTimes piece. I'm trying to get them to think flexibly about what they're doing. The students want to memorize formulas and write programs by rote.
>
> - Mark
>
>
> --
>
************************> To post to this group, send email to
****************." href="mailto:****************." class="">****************.--
************************To post to this group, send email to
****************." href="mailto:****************." class="">****************.