Wanted: Advice from CS teachers
-
@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. -
@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.@giuseppe_aceto @futurebird This is _such_ a cool idea!
I'm thinking for me, about 1/4 way into the course, where they have a little more to work with, and really need to read those messages to solve bigger problems. But certainly early, and for the high anxiety sorts, maybe at the beginning, yes. -
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.
Not sure that I can qualify as a CS teacher (I only taught a few informal classes, mostly Scratch) but as a user I can relate.
There is some existential dread in having your basic tools not working without warning.
A bit like physicists in the three-body problem start despairing when physics starts to behave in an unpredictable way.I have this when I work on Arduino and a thingy doesn't work as it should.
1/?
-
Not sure that I can qualify as a CS teacher (I only taught a few informal classes, mostly Scratch) but as a user I can relate.
There is some existential dread in having your basic tools not working without warning.
A bit like physicists in the three-body problem start despairing when physics starts to behave in an unpredictable way.I have this when I work on Arduino and a thingy doesn't work as it should.
1/?
Like, I worked on a thermal captor and the hardware itself provided unreliable measures - there was nothing I could do about it and it threw all my project into the gutter.
I have the same inner and unsettling reaction when I press the button on my computer and for whatever reason, it doesn't power on.
If I get an error message, something I can understand and act upon, it's not the same. Maybe I'm still screwed if I can't fix it, but at least I understand what's wrong.2/?
-
Like, I worked on a thermal captor and the hardware itself provided unreliable measures - there was nothing I could do about it and it threw all my project into the gutter.
I have the same inner and unsettling reaction when I press the button on my computer and for whatever reason, it doesn't power on.
If I get an error message, something I can understand and act upon, it's not the same. Maybe I'm still screwed if I can't fix it, but at least I understand what's wrong.2/?
With software rather than hardware, I don't have this total distress when a bug makes a Python program I wrote not working (which is basically, anytime I write a Python program).
I'm not really proficient in Python, but I know how to debug. Painstakingly and not very efficiently, but at least I have an idea of how to proceed.3/?
-
With software rather than hardware, I don't have this total distress when a bug makes a Python program I wrote not working (which is basically, anytime I write a Python program).
I'm not really proficient in Python, but I know how to debug. Painstakingly and not very efficiently, but at least I have an idea of how to proceed.3/?
I do have this gut-wrenching despair when something doesn't work in Godot, though, and it's not something I understand as a possible bug of my code but rather as some knowledge I'm lacking (Godot is great but also extremely rich, and I have only a grasp of its most basic functions); when I'm completely at a loss, in other words, when what I'm missing is out of my intellectual reach.
4/?
-
I do have this gut-wrenching despair when something doesn't work in Godot, though, and it's not something I understand as a possible bug of my code but rather as some knowledge I'm lacking (Godot is great but also extremely rich, and I have only a grasp of its most basic functions); when I'm completely at a loss, in other words, when what I'm missing is out of my intellectual reach.
4/?
Colonel Michel Goya (who's probably as evil as any professional soldier, and alas betrayed his father's Spanish Republican ideals, but who do think) explains in his book "Sous le feu" how not knowing what to do is completely debilitating in situations of stress, while if you give precise orders, even soldiers who are actively shot at will gather their spirits and do what they need to do, though they are still under fire.
5/5