kilobug comments on Checking for the Programming Gear - Less Wrong
You are viewing a comment permalink. View the original post to see all comments and the full post content.
You are viewing a comment permalink. View the original post to see all comments and the full post content.
Comments (53)
My assumption was that people who can't seem to learn to program can't get to the gut-level belief that computers don't use natural language-- computers require types of precision that people don't need.
However, this is only a guess. Would anyone with teaching experience care to post about where the roadblocks seem to be?
Also, does the proportion of people who can't learn to program seem to be dropping?
On the other hand, I did the JavaScript tutorial at Codacademy, and it was fun of a very annoying sort-- enough fun that I was disappointed that there only seemed to be a small amount of it.
However, I didn't seem to be able to focus enough on the examples until I took out the extra lines and curly parentheses-- I was literally losing track of what I was doing as I went from one distant line to another. If I pursue this, I might need to get used to the white space-- I'm sure it's valuable for keeping track of the sections of a program.
My working memory isn't horrendously bad-- I can reliably play dual 3-back, and am occasionally getting to 4-back.
If there are sensory issues making programming difficult for a particular person, this might be hard to distinguish from a general inability.
I did teach Python at a computer science school (people there already had 2 years of scientific studies after "bac"), and I was amazed to see how hard it was for some of them to understand that in Python :
So yes, I guess the key is about understanding what types are. The same kind of issues arise between using a variable and the variable name.
Now, I'm not sure how much this is teachable and when (ie, maybe it's a kind of skill you've to learn when you're young to really grasp). I started programming when I was 11, so there may be something around it, but I don't have much data on that.
To be fair, it's not really enough to know what types are to get this one right. You have to understand that the + operator is overloaded based on the types of its operands; that is, + actually means several different things, depending on the operand types. The experience people have of + meaning numerical addition might be interfering with their learning. Maybe if someone else's students had problems with it, they could try defining a function putTogether (a, b) and telling the students that it's a mysterious black box that does one arbitrary thing for numbers and a completely different thing for strings. Then you could leave revealing that it's actually the language's + operator that has this strange behavior for later.
Couldn't you lead them to guess by themselves, by asking them to guess the result of a series of expressions like:
4+2
"Hel" + "lo"
"Di" + "Caprio"
"Jack" + "Black"
"Jack" + " Black"
"ABCD" + "EFGH"
"1234" + "5678"
Maybe insert an "ABCD" + "1234" in between your last two expressions.