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 :
>>> 4+2
6
>>> "4"+"2"
'42'
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.
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.