Wanted: Advice from CS teachers
-
Yeah...
what I'm trying to convey is that there is a *reason* why the code isn't working and it will make sense in the context of the rules the got dang computer is trying to follow.
It might be annoying or silly, but it will "make sense"
@futurebird I know what you mean, and you're perfectly right when it comes to sane programming languages. However, C++ compilers have a habit of spewing out error messages the size of a Tolstoy novel in response to mistakes as trivial as a missing comma. Now I assume you're not teaching the kids C++ as that would be quite irresponsible.
-
@futurebird I usually have clear me/them speaking parts in the course. While I speak, they listen, which I enforce up to the last whisper.
Also, the "me" parts only take 15-20 minutes each, then it's time for questions, https://github.com/ineiti/livequiz, or other interactions.
For the exercise sections, the "me" parts are of course much shorter.
"I usually have clear me/them speaking parts in the course. While I speak, they listen, which I enforce up to the last whisper.
Also, the "me" parts only take 15-20 minutes each"
This is how I normally teach (although with middle school students I keep "me" bits to under 8 min each) this is why it's so annoying when they call out during these sections. Something they wouldn't ever do normally.
Something about coding and seeing the error makes them not see it as "time to listen"
-
This is helpful for me. I had a hard time understanding why one student was upset, almost to the point of tears (they are very sensitive) that the error message said "error on line 32" but, really the problem was the way they originally named the variable.
"Why couldn't it just say the error was on line 4? 😢 I tried everything I could to fix line 32. 🥺 😢 "
My sweet child... it's just not that smart, not like you.
@futurebird @wakame I'm not a teacher but I have given interns and others learning projects. Like "here is some code that should do <the thing> but it doesn't work. find why it's not doing <the thing>". I also used to come into the room and ask "what's broken?" making the framing, there's always something not working and we're here to find out way. and always starting my help with "what have you tried"
-
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 This is an excellent exercise and most of your students will get a lot out of it. Be prepared though for the 3-6 who simply will not believe you. Especially if they've used ChatGPT. My CS friend has students who don't believe him when the thing in front of them differs from ChatGPT just like my language students will not accept that the machine translation is not correct/common usage.
-
@futurebird @wakame I'm not a teacher but I have given interns and others learning projects. Like "here is some code that should do <the thing> but it doesn't work. find why it's not doing <the thing>". I also used to come into the room and ask "what's broken?" making the framing, there's always something not working and we're here to find out way. and always starting my help with "what have you tried"
That is something I should definitely try sometime.
When the broken code comes from another person, it is more "improving something" and less "getting your work dissected".
-
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/
It's probably a missing or extra comma, quote, or paren.
"looking for it in a calm, systematic way" after the requisite freak-out & meltdown....
-
[Remark: I am not a teacher, but I taught/coached some people 1-on-1.]
Working with a computer is not like working with a human.
A computer can't be "wrong". Not in a human sense. It's just a machine.
So if your program works, then reality and physics and so on validate your work.
You have made your will manifest outside of your head, independent of judgement or opinion of others.
Part of you has become immortal.If it doesn't work, then there is nobody to console you, nobody you can blame for not understanding you.
What you did is objectively wrong.I think the second thing deals a rather unique blow to your psyche.
You can't blame your building materials, or other people, or anything else. The blame is yours and yours alone.Of course you can "correct" your mistake, fix your bugs and so on.
But I still think this is a large piece of humble pie you have to digest first.This comment is spot on I think. I’ve seen this with little kids and devices like iPads. When the iPad doesn’t do what they want, they will get mad and say “it’s not doing what I want” to which I have to reply “it’s doing exactly what you told it to do”.
Also, I think for most people computers are a “black box”, so when it errors students may assume they don’t have the skills to fix it.
-
"I usually have clear me/them speaking parts in the course. While I speak, they listen, which I enforce up to the last whisper.
Also, the "me" parts only take 15-20 minutes each"
This is how I normally teach (although with middle school students I keep "me" bits to under 8 min each) this is why it's so annoying when they call out during these sections. Something they wouldn't ever do normally.
Something about coding and seeing the error makes them not see it as "time to listen"
@futurebird I'm also interested how to add LLMs to the mix: how to use them in a way we use IDEs now: we still know how to program/read code, but IDEs are so useful.
This will add another level to the me/them, where sometimes I'd want them to use LLMs, other times not.
But first I need to convince the school it's a good approach: I'm an external teacher, and as such have very little influence...
-
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 give them code that is flawed and without/withbad commentary to fix from the beginning. Also to teach them that this is the default state of *any* code they will encounter in real life.
-
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 You probably already know @b0rk‘s Pocked Guide to Debugging. The thing I love so much about it is how she cherishes the bug, instead of squashing it (in the illustrations too). I love this attitude. Not sure if students can learn to think that way? There is a beautiful poster too:
📰 https://wizardzines.com/zines/debugging-guide/
🖼️ https://store.wizardzines.com/products/poster-debugging-manifesto
-
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.
When "teaching Internet" (to adults), to explain algorithms I asked "describe what you do between you boot (wake up) and go to work".
A high % went to work wearing their pajamas, according to their algorithm
It was my way to teach "don't take anything for granted".
-
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.
Sometimes when you are teaching you need to stop the lecture, change the plan because there is an error in the worksheet, or the problem is too hard.
What's really annoying me is that some students think that when their code doesn't run this is "a problem with the lesson" I should stop everything until we fix it.
But, my lesson is fine. The student just made a typo.
They are so focused on the code running they aren't listening to the lesson which would teach them WHY it's not running.
-
I think they become anxious when their code isn't working the same as what I have up on the projector and they want to get it fixed RIGHT AWAY so they won't fall behind.
Then when one of them starts calling out they all do it.
I may take some time to explain this.
This never happens when I'm teaching math. Something about coding makes them forget some of their manners, and become less self-sufficient. "It's broke! I'm helpless!"
What is that about?
@futurebird "This never happens when I'm teaching math. Something about coding makes them forget some of their manners"
My take -- it's GOAL-ORIENTED. Maths is modelling, descriptive. Δ🧠-states
-
This is helpful for me. I had a hard time understanding why one student was upset, almost to the point of tears (they are very sensitive) that the error message said "error on line 32" but, really the problem was the way they originally named the variable.
"Why couldn't it just say the error was on line 4? 😢 I tried everything I could to fix line 32. 🥺 😢 "
My sweet child... it's just not that smart, not like you.
@futurebird @wakame speaking of computers not being that smart, I always like the lesson of programming with real world examples. Like "program me to make a peanut butter sandwich". inevitably you get something like "step one, put peanut butter on bread" at which point you put the jar of peanut butter on a slice of bread.
a lot of human interaction assumes a computer is"smart" because it can do things quickly that you cannot do quickly and humans have worked very hard to make it appear that computers are thinking and doing stuff like a person. Machine learning is, unfortunately exacerbating this effect.
to the original question of how to reduce interuption? maybe that why my college professor got into too programming made me handwrite code with pencil and paper 😭 (not a flashback I needed)
-
Sometimes when you are teaching you need to stop the lecture, change the plan because there is an error in the worksheet, or the problem is too hard.
What's really annoying me is that some students think that when their code doesn't run this is "a problem with the lesson" I should stop everything until we fix it.
But, my lesson is fine. The student just made a typo.
They are so focused on the code running they aren't listening to the lesson which would teach them WHY it's not running.
@futurebird I like to say that when students are in front of a computer, their ears disappear. :)
-
I think they become anxious when their code isn't working the same as what I have up on the projector and they want to get it fixed RIGHT AWAY so they won't fall behind.
Then when one of them starts calling out they all do it.
I may take some time to explain this.
This never happens when I'm teaching math. Something about coding makes them forget some of their manners, and become less self-sufficient. "It's broke! I'm helpless!"
What is that about?
> I think they become anxious when their code isn't working the same as what I have up on the projector and they want to get it fixed RIGHT AWAY so they won't fall behind.
Isn't this the whole problem? Maybe they intuit from you that the class is "keep up with the projector", when in reality the valuable skill is "if you're lost or confused, come up with hypothesis and critically explore them by yourself until you figure out what's going on".
-
Sometimes when you are teaching you need to stop the lecture, change the plan because there is an error in the worksheet, or the problem is too hard.
What's really annoying me is that some students think that when their code doesn't run this is "a problem with the lesson" I should stop everything until we fix it.
But, my lesson is fine. The student just made a typo.
They are so focused on the code running they aren't listening to the lesson which would teach them WHY it's not running.
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 "This never happens when I'm teaching math. Something about coding makes them forget some of their manners"
My take -- it's GOAL-ORIENTED. Maths is modelling, descriptive. Δ🧠-states
@futurebird ....your timeline is exhausting, a navigational nightmare! Extension of a class-full, I guess....
-
@futurebird So Your Code Won't Run: great! Errors like this that stop it running completely are much easier to track down than errors that just give you the wrong answer. Or give you the wrong answer _sometimes_.
@RogerBW @futurebird (some) C coders have a saying:
If the compiler emits an error, then your code can't run;
If the compiler emits a warning, then your code won't run, at least not the way you expect it to;
If the compiler emits no errors and no warnings, then it's high time you updated your compiler.
-
At the university we had this maybe once.
But then, to quote a professor: "You are learning 'computer science' here. 'Programming' is something that you should either already know or learn in your free time."