Wanted: Advice from CS teachers
-
The other aspect is that hardly anything at school teaches debugging. It's a skill folks pick up later in life when they build and repair things.
Techniques like cross testing where you replace parts of your system and see if the error still occurs are just craftsmanship.
But for a lot of students, it's probably something new that they have to get some experience with.
Which is probably hard when they also have to focus on other stuff at the same time.
I'm no educator.
I don't know how to split this into packages that allow students to build confidence and competence while not getting bored and losing interest at the same time.
But when students fail at a message that basically says "add ; to the end of the line 42", then they imho either lost confidence that they can resolve this. Or the message is not as easy to decipher as somebody who done that often thinks. Or both.
-
@aredridel I have been frustrated all my working life by otherwise good programmers who will not document. I've only ever worked with one programmer who in my opinion documented enough (and I've ever since striven to emulate him). But in general I've seen no evidence that the majority of software people 'want to do documentation well'.
On the contrary, a majority see it as menial labour and a waste of their time.
@simon_brooke tbh what lots of environments allow is menial. But if people use coding tools they’re going to need to fix it for the tools at least.
-
@futurebird To be fair there are a lot of professional software engineers I know who have essentially this same problem. The second anything is wrong they go on slack and start asking for help immediately and go straight to helplessness.
@wesley @futurebird I see this too. I tend to deal with this by giving them the benefit of the doubt and asking them what they've already tried. If they've tried something, then they reply with useful context. If they have not yet tried anything, then they quietly go away.
-
"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 @ligasser Teaching math is a dyad: You or the student are communicating. In coding, it's triadic: you, the student, and the error message -- which won't always appear in calming, student-friendly language.
When an error message interrupts you, the dynamic shifts. Students feel prompted to react to the sudden problem immediately.
-
Tangentially related:
"AI can write code so why teach how to code?"
"Great point! It can write an essay too, so why teach how to read."
Like. We've had calculators for decades and still teach arithmetic. And functionally the average person needs to know probably more about mathematics and needs to read more than they did a century ago. The same will apply for code.
@futurebird I literally saw some LLM booster claim that you should use AI to learn things like how to code. Keep in mind that the person who this LLM booster was talking to hadn't written a line of code in their lives and didn't even know the first thing about it other than they wanted to design something. These LLM boosters need a massive readjustment of their expectations, they seriously do
-
@mhoye @futurebird @david_chisnall It is always the same: Six months from now, the models will obsolete the humans they're hiring now.
I don't know* why I keep freaking out and getting terrified and depressed now, 36 months into "programmers will be gone in 6 months".
*) I suppose I do know; it's because I have an anxiety disorder.
@datarama @mhoye @futurebird @david_chisnall if it's any consolation I've been a book editor for nearly 20 years and I still get asked what I do that spellcheck doesn't. The latest by a guy who designs fitted wardrobes. What does he do that IKEA doesn't?!
-
@futurebird @EricLawton @david_chisnall
"I have improved my LLM"
*looks inside*
*improvement is 100% classical handcrafted algorithmic code*@silvermoon82 @futurebird @EricLawton @david_chisnall someday folks will smarten up and when the empty suits shriek for "AI" we'll all have a back pocket plausibly-deniably-actually-LLM-generated libraries that only affect
- find-and-replace processes for unique variable names
- the choice of one of several visually distinct whitespace conventions
- comment blocks that start with some unfalsifiable praise of the CEO (this is how such blocks are identified to other programmers) and then proceed to say something that is very clearly from another language and impossible to implement in the one actually being used -
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 teach CS and sometimes get the same issue. One thing I do is immediately ask the nearest student if they can spot the problem with the first students code - encourage them to help each other out (even encouraging light competitiveness about spotting easy mistakes that they should have seen right away). Second, I always start with a question -e.g. “where is the problem most likely to be?” - until they learn to ask that question themselves.
-
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'm not a CS teacher, but I have taught both my kids how to code.
In order to program, you first think both backwards and forwards. For design, you think about what you want, and work backwards from that. For coding, you think about what the present problem needs, and work forwards from that. You imitate the computer in your mind step-by-step to check.
When debugging, it's the same. You think about what happened, and you work backwards from that. What must have been true for that to happen? You can usually find the place where the error must be from that. You might add some code to verify your assumptions. For each piece, you imitate the computer in your mind, forward step-by-step, to find where the divergence is.
-
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 had an engineer do that, with me, when I first started programming professionally and it was a big help. Both for giving me a framework for looking at the errors, but also just showing me that, yeah, sometimes those errors are difficult for EVERYONE to understand, and to not panic. It really helped me build confidence.
-
@futurebird I like to say that when students are in front of a computer, their ears disappear.

@jenesuispasgoth @futurebird Also, sometimes their humility!

-
@futurebird @ligasser Teaching math is a dyad: You or the student are communicating. In coding, it's triadic: you, the student, and the error message -- which won't always appear in calming, student-friendly language.
When an error message interrupts you, the dynamic shifts. Students feel prompted to react to the sudden problem immediately.
@jhlibby @futurebird I only did an intensive introduction C++ course. But it was with 18 year old students. They seemed to have a better abstraction of the computer, at least I don't recall them being offended by errors...
-
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.
If them interrupting becomes a problem, I would tell them: “It will not work. Even if you ‘fix’ something, it will often still not work. Your _task_ is to find the errors yourself. Try as many things for the next five (ten) minutes. Then I will go around and help you”.
If that does not work, I tell them: I will go around in _this_ order and help you, until then please stay as quiet as possible so that the others can concentrate.
But both have only limited effect, depending on age and other factors. I cannot completely avoid this behavior (mostly with male students) -
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 Something I noticed in junior developers is that they sometimes tend to blame the library or language when something goes wrong. Whereas a more experienced programmer would know to blame themselves first.

-
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 I mean, sometimes the computer really does just hate you 🤪
-
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 Also, I've noticed that learner programmers very rarely read the error messages with any level of attention.
Ooh, you could do a reverse challenge.... provide them with the error message and have them write the code that produces it!
-
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 during my course (kind of cs 101) I proposed a pokemon-error game: when they start using an ide with the standard helloword first program, their first task is to make edits to cause errors: for each one they must collect the message, translate and note down. also classify as warning, warning-but-actually-error, compile/link/runtime/logic error.
Someone responded well, with a longer updated list, but the goal was to defuse the negative reaction, it kind of worked. -
@futurebird during my course (kind of cs 101) I proposed a pokemon-error game: when they start using an ide with the standard helloword first program, their first task is to make edits to cause errors: for each one they must collect the message, translate and note down. also classify as warning, warning-but-actually-error, compile/link/runtime/logic error.
Someone responded well, with a longer updated list, but the goal was to defuse the negative reaction, it kind of worked.@futurebird If I had time l'd create actual physical cards with a picture of the "errormon" and the characteristics, and let them pick their preferred errors to keep.
Better, yet, they could draw their idea of animal representation. -
@futurebird during my course (kind of cs 101) I proposed a pokemon-error game: when they start using an ide with the standard helloword first program, their first task is to make edits to cause errors: for each one they must collect the message, translate and note down. also classify as warning, warning-but-actually-error, compile/link/runtime/logic error.
Someone responded well, with a longer updated list, but the goal was to defuse the negative reaction, it kind of worked.@futurebird when teaching a python bootcamp for people that never programmed (often from humanities background, with a special social anxiety around STEM) I introduce the "mystery solving hat", and 3 steps:
1) decide what should happen (sometimes this is not crystal clear to begin with)
2) modify the source and check the result
3) put on the mystery solving hat to discover why it didn't go the way you wanted, using errors as clues towards the solution.
"that's how professional programmers work" -
@futurebird when teaching a python bootcamp for people that never programmed (often from humanities background, with a special social anxiety around STEM) I introduce the "mystery solving hat", and 3 steps:
1) decide what should happen (sometimes this is not crystal clear to begin with)
2) modify the source and check the result
3) put on the mystery solving hat to discover why it didn't go the way you wanted, using errors as clues towards the solution.
"that's how professional programmers work"@futurebird I stress the concept that "smart" "competent" "professional" programmers spend significant time chasing errors, and code rarely works from the start ("have you heard of bugfixes and security updates?!").
and I bend a bit the reality adding "there's even a programming style that begins with purposely not-working code, to get to the functioning version gradually" (TDD). it's half truth but fun. so they can stop feeling stupid and can enjoy the intellectual challenge.