Wanted: Advice from CS teachers
-
My students aren't lazy, but they *can* be a little perfectionist: scared to take risks or sit with not having the answer right away.
They are really upset when their code won't run... but staying calm and *systematically* looking for the cause of the problem, knowing that if you just work through the tree of possible causes you will find it is not something they are good at.
I think I need to teach this.
Maybe I will give them some broken code and we will find the errors together.
@futurebird @ShaulaEvans yes! The constructive value of "I don't know" lies sitting with (using) the discomfort, and daring to try something that may not work (yet). I was a great debugger, if I say so myself ๐คญ.
-
"Error handling code is code."
It had not occurred to me that a student might not see it that way "some guy wrote code to try to tell you what went wrong" but I can see how this might not be how a student might see the errors.
It's like when I realized as a kid that all books are just ... written by people. A revelation. I think I thought, on some level, books were a natural product of the universe. When I realized they could have typos, bad ideas it was so exciting.
@futurebird @petealexharris @wakame
And sometimes its not even the code but instead something inside the device.
Recently decided to add a feature to a device I made for myself that added WiFi functionality to it. First thing noticed when the device started was it rebooting every 3 seconds
Since it had been fine before this my mind said dumbo you did something wrong. Spend time carefully going through the code and not finding any problem. Looked online and did not see complaints similar to what I was experiencing It was when I gave in and used someone else's library that the problem was found.
All I did was initialize the library and poof the every 3 second reboot started again. Was sure I had a bad device but went through the Github issues and found someone with the same complaint. Turns out the device works fine minus WiFi with 5v external power but needs 6v with WiFi. The WiFi bootup pulls the voltage down and the internal watchdog sees the low power and reboots. Ugg.
-
I think this meme captures a point I am trying to make very nicely.
@wakame @futurebird It's seems a contradiction but actually .. not

-
Wanted: Advice from CS teachers
When teaching a group of students new to coding I've noticed that my students who are normally very good about not calling out during class will shout "it's not working!" the moment their code hits an error and fails to run. They want me to fix it right away. This makes for too many interruptions since I'm easy to nerd snipe in this way.
I think I need to let them know that fixing errors that keep the code from running is literally what I'm trying to teach.
@futurebird There's always the classic return: "Why?"
-
@futurebird @ShaulaEvans yes! The constructive value of "I don't know" lies sitting with (using) the discomfort, and daring to try something that may not work (yet). I was a great debugger, if I say so myself ๐คญ.
-
@futurebird There's always the classic return: "Why?"
Why what?
-
Wanted: Advice from CS teachers
When teaching a group of students new to coding I've noticed that my students who are normally very good about not calling out during class will shout "it's not working!" the moment their code hits an error and fails to run. They want me to fix it right away. This makes for too many interruptions since I'm easy to nerd snipe in this way.
I think I need to let them know that fixing errors that keep the code from running is literally what I'm trying to teach.
@futurebird First of all, amazing somebody still teach programming.
40+ years experience in SW/FW developing here and the simple truth is that not everybody is cut to program computer.
Is not only matter of knowledge, is matter about how a person think and is curious about the world and things working.
Every single one person who interrupt and ask, will end up using google and AI to write a program.
No personal ideas, no spending hours trying to understand the problem and the nature of errors.
In my career I saw "new" generations of developers knowing less and less. Almost nobody of new generations knows what a computer is and how is working. It seems a useless information but is exactly what make you understand the errors.
Errors exists all along the "chain", from your code to code you are using (compiler/OS/drivers/etc.) up to the electronic.
Maybe the way you and others teach programming should change, making more like a mystery hour
-
Why what?
@futurebird "My code isn't working!" "Why?"
I realize that's a flip response to your inquiry, but, ultimately it is what you're looking to enable your students to do, right? They should be able to say more than "it isn't working" which is uninformative. So, it isn't working .. what else can you say about what is - or isn't - happening and what hypothesis can you give as to why? And if you have a hypothesis, how can you test it?
-
Things to Try:
* look for typos
* look at what the error message indicates.If these don't work consider reverting your last changes to the last working version of your code. Then try making the changes again, but be more careful.
If you can't revert the changes, start removing bits of the code systematically. Remove the things you think might cause the error and run the code again. Isolate the change or code that causes the problem.
You can be a great programmer.
2/2
@futurebird Just an idea but what about "switching" students around so they have to check someone else's code?
I used to do that with my students, asking them to "grade" each other papers.
It's always easier to see others' mistakes and it flatters their ego... I mean, self-confidence.Also it's a sneaky way to make them realize that teaching is NOT easy.

-
My students aren't lazy, but they *can* be a little perfectionist: scared to take risks or sit with not having the answer right away.
They are really upset when their code won't run... but staying calm and *systematically* looking for the cause of the problem, knowing that if you just work through the tree of possible causes you will find it is not something they are good at.
I think I need to teach this.
Maybe I will give them some broken code and we will find the errors together.
@futurebird I taught an Intro to R for Biologists course a few years ago and my students had the same problem... and the solution was exactly this, giving students a list of the most common errors for reference & fixing some broken code together.
More than anything it helped my students' confidence- I think a lot of them just needed a place to start. After a week or two they weren't even using the list I gave them and fixed errors on their own
-
Example of the problem:
Me: "OK everyone. Next we'll make this into a function so we can simply call it each time-"
Student 1: "It won't work." (student who wouldn't interrupt like this normally)
Student 2: "Mine's broken too!"
Student 3: "It says error. I have the EXACT same thing as you but it's not working."
This makes me feel overloaded and grouchy. Too many questions at once. What I want them to do is wait until the explanation is done and ask when I'm walking around.
@futurebird I have on occasion worked with software professionals who behave much the same way.

-
So Your Code Won't Run
1. There *is* an error in your code. It's probably just a typo. You can find it by looking for it in a calm, systematic way.
2. The error will make sense. It's not random. The computer does not "just hate you"
3. Read the error message. The error message *tries* to help you, but it's just a computer so YOUR HUMAN INTELLIGENCE may be needed to find the real source of error.
4. Every programmer makes errors. Great programmers can find and fix them.
1/
@futurebird this is a great outline for a โdebugโ lesson. I try to scaffold up to writing their own code over the semester:
Assignment 1 Read code: give them working code and they add comments.
Assignment 2 Debug code: give them broken code WITH comments of what itโs SUPPOSED to do and see if they can fix it. Both typos and logic errors. But I give this assignment after teaching about break points and other debugging tools.
Only after that are they allowed to start writing code. After that they tend to bug me less in class with their errors (pun intended
). -
Wanted: Advice from CS teachers
When teaching a group of students new to coding I've noticed that my students who are normally very good about not calling out during class will shout "it's not working!" the moment their code hits an error and fails to run. They want me to fix it right away. This makes for too many interruptions since I'm easy to nerd snipe in this way.
I think I need to let them know that fixing errors that keep the code from running is literally what I'm trying to teach.
@futurebird I've never taught a class, but my first thought is to try starting with a live-coding session where I make mistakes myself
-
@futurebird I have on occasion worked with software professionals who behave much the same way.

Well perhaps they have nostalgia for those responsibility-free middle school days.
-
Example of the problem:
Me: "OK everyone. Next we'll make this into a function so we can simply call it each time-"
Student 1: "It won't work." (student who wouldn't interrupt like this normally)
Student 2: "Mine's broken too!"
Student 3: "It says error. I have the EXACT same thing as you but it's not working."
This makes me feel overloaded and grouchy. Too many questions at once. What I want them to do is wait until the explanation is done and ask when I'm walking around.
@futurebird I try to separate clearly the moments when they code and the moments when I explain stuff. When I explain, they have to listen (not look at their computers). They naturally tend to not interrupt with โit doesn't workโ comments, and usually ask interesting questions. For this to work, I always promise that I will share with them the code I typed I front of them (for that, I use my institution's platform).
-
Sometimes I have them write the code on paper with the computers closed. And this is fine, but I'd rather have them using the IDE or textedit and there is a limit to how much fun you can have with code on paper.
And it does tend to be the weaker students who are almost happy to find something to stop the onslaught of information "see it doesn't work! we can't go on!" and that obviously makes me very grouchy.
I need them to see this is like saying "Teacher my pencil broke! Stop the lesson!"
@futurebird can I ask : is this a โrecentโ phenomenon? I donโt really recall this behaviour except as an outlier when I did CS (which was a while agoโฆ)
-
@futurebird can I ask : is this a โrecentโ phenomenon? I donโt really recall this behaviour except as an outlier when I did CS (which was a while agoโฆ)
It's always been a thing though I do think it's been getting a little better.
-
Example of the problem:
Me: "OK everyone. Next we'll make this into a function so we can simply call it each time-"
Student 1: "It won't work." (student who wouldn't interrupt like this normally)
Student 2: "Mine's broken too!"
Student 3: "It says error. I have the EXACT same thing as you but it's not working."
This makes me feel overloaded and grouchy. Too many questions at once. What I want them to do is wait until the explanation is done and ask when I'm walking around.
@futurebird Iโve mostly taught adults, so this might not work for you, but I would try explaining that at the end of the lecture, you donโt need them to have working code, you need them to have a working understanding. Theyโre missing the important part of class, the learning, to focus on an unimportant part of class, producing a working program. If itโs not working, focus up and wait until we have a pause. To me, this sounds more like an etiquette question than a programming one.
-
@futurebird I try to separate clearly the moments when they code and the moments when I explain stuff. When I explain, they have to listen (not look at their computers). They naturally tend to not interrupt with โit doesn't workโ comments, and usually ask interesting questions. For this to work, I always promise that I will share with them the code I typed I front of them (for that, I use my institution's platform).
@futurebird Another problem is explaining to them that errors are good and that the compiler is their friend, as you already explained. It's not easy with C, for instance, where the compiler spits very obscure error messages.
Good luck!
-
@futurebird Iโve mostly taught adults, so this might not work for you, but I would try explaining that at the end of the lecture, you donโt need them to have working code, you need them to have a working understanding. Theyโre missing the important part of class, the learning, to focus on an unimportant part of class, producing a working program. If itโs not working, focus up and wait until we have a pause. To me, this sounds more like an etiquette question than a programming one.
@futurebird maybe even just a โit doesnโt need to compile right now, weโre focused on <concept>โ and leaving the compiler angry