I often forget how embedded I am in the language of computing. Even before I took up programming, I was quite familiar with how to use Unix commands and the difference between my computer and the server where my web site actually lived. Having grown up in a GUI world, my students don’t see any of the underlying structure of the computers and servers they interact with. I expose some of that but it takes a while before it becomes second nature to them.
For example, I gave this instruction verbally, “type /Users/Documents” and more than one student typed “slash Users slash Documents”. Or conversely, when learning about types, I had the written instructions, “type type(6)”, and some students assumed I had typed type one too many times and just typed in 6. Sometimes with the parentheses. And then, when asked to define what hello is in either this context: type(hello) or this one: hello=”world”, they are baffled. It’s a word, it’s a string, no, it’s a variable. Their concept of variable in math is that a) you’re usually solving for it and b) it always has some value. In CS, of course, variables sometimes don’t have values (giving you an error), or they can have values that are very different from a number: lists, functions, dictionaries, words, sentences, files, etc. That’s more mind-blowing to students than one might think.
As Garth said in his comment to my last post: “Teaching programming is like teaching a foreign language but the student has to understand logic, major problem solving, technology and memorize the language, all at once.” I’d say, too, that they’re having to learn new English words alongside their “foreign” translation. It’s like having learned English, you find out there’s a whole dictionary full of words you never learned, and now you have learn them plus their translation in another language. Painful.
But kind of fun. I’ve said to both my CS I class and my 8th grade class that what they know right now, 6 weeks into school is more than any of their teachers know about computing (with maybe one exception besides me). They makes them smile even as they struggle to learn this new context and language.
I have a tendency to throw my students into an activity without much explanation and then explain things after they’re done. I know it can be unnerving. I had a student ask a very good question after class yesterday. She asked, “What is it that we’re doing exactly? Is this a language?” Once I explained, she then asked if there were other languages and how they worked. The “throwing them in the deep end” approach leads to this kind of curiosity usually. They often feel the need to figure it out. That need to figure it out is what will keep them going when they feel a little lost.