Wanted: Advice from CS teachers
-
Here, we got two separate grades for written work: One for content and one for presentation (which basically meant penmanship)
The thing is, these are not separable concerns. People who struggle to type tend to write code that’s hard to read because typing comments and using meaningful function and variable names is a struggle. So you’re implicitly measuring input-device proficiency when you judge code (this is slightly different with autocomplete because using a meaningful name ones is effort but then autocompleting it may be easier than autocompleting or typing a shorter one).
Exactly the same applies with essay writing. Writing with a pen has (for me) a much higher cognitive load. When I type, I frame a sentence in my head, edit it a bit, then flush the buffer asynchronously through my fingers without any involvement of my conscious mind. When I write with a pen, I have to think about forming the shapes. For my mother, it’s the exact opposite. We both have a thing where we can’t spell a word if you ask us, but get her to write it or me to type it and it will be correct.
If you had to type an essay using my nose, no amount of separation of presentation and content marks would save you from a low grade. For me, using a pen is different in degree but similar in kind.
@david_chisnall @futurebird I mean, I agree. I'm describing the writing assessments of the dysfunctional Danish school system of the 1980s, not praising them. Having been a teacher myself, I also figure it would probably be very hard for a *reader* to separate those two concerns - if you're distracted by illegible writing (or impressed by wonderful penmanship), then it's going to be hard to completely separate your impression of the content from that.
Back then, for home assignments, I would actually often type my essay into Geowrite on my Commodore 64 first and *then* copy it to paper by writing it down with a pen - which really perfectly illustrates how ridiculous that part of the exercise was.
-
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 my first thought is pair them up and give them problems/coding puzzles to work through? Get them used to banging their head against the problem.
-
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!"
That's an interesting question, and I've seen similar. I skimmed the other answers, yet couldn't find my points, so here's my two cents:
1) The immediacy of feedback is different to solving a math or physics problem.
In math or physics, there's an explanation. Then students get a task. Then students calculate stuff. And then the correct resolution is revealed. Pretty much like a quiz.
And it's a flow that gives a teacher the time to look at individual problems afterwards.
-
That's an interesting question, and I've seen similar. I skimmed the other answers, yet couldn't find my points, so here's my two cents:
1) The immediacy of feedback is different to solving a math or physics problem.
In math or physics, there's an explanation. Then students get a task. Then students calculate stuff. And then the correct resolution is revealed. Pretty much like a quiz.
And it's a flow that gives a teacher the time to look at individual problems afterwards.
Enforcing a similar flow when teaching programming might help. Give folks more time to think about their code. Press "run" at the same time.
Having seperate time slots for explaining and debugging might be less overwhelming for everybody.
-
Enforcing a similar flow when teaching programming might help. Give folks more time to think about their code. Press "run" at the same time.
Having seperate time slots for explaining and debugging might be less overwhelming for everybody.
2) a) Another thing is, that syntax doesn't matter in math or physics.
When students do math or physics, the notation doesn't matter in solving the problem. Sure, they might use a wrong notation, and sometimes that gets them confused. But the solving is in their head, the notation is an afterthought.
If in physics they forget to put the units onto their result, they still feel like they solved the task.
-
2) a) Another thing is, that syntax doesn't matter in math or physics.
When students do math or physics, the notation doesn't matter in solving the problem. Sure, they might use a wrong notation, and sometimes that gets them confused. But the solving is in their head, the notation is an afterthought.
If in physics they forget to put the units onto their result, they still feel like they solved the task.
b) Nor do young students debug their formulas. They get told by the teacher what and where they did wrong when they hand in their solution.
Aren't the programming students doing the same thing?
c) I think a lot of the being overwhelmed aspects comes from students learning three things at once:
- Syntax
- Programming
- DebuggingProgramming is not the only instance where students learn syntax. Language classes exist. But it's more strict than anywhere else.
-
b) Nor do young students debug their formulas. They get told by the teacher what and where they did wrong when they hand in their solution.
Aren't the programming students doing the same thing?
c) I think a lot of the being overwhelmed aspects comes from students learning three things at once:
- Syntax
- Programming
- DebuggingProgramming is not the only instance where students learn syntax. Language classes exist. But it's more strict than anywhere else.
Just think of a beginner level language student trying to speak. And after the first sentence, they get interrupted with "Nope. Wrong, fix your sentence." "Nope, still wrong" "Nope". It would be quite a frustrating experience, wouldn't it?
-
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 maybe include exercises with intentionally broken code and the task to fix it on their own? Maybe they then see that there are typical problems exactly like the ones they complain about that are part of programming and not problems of the teaching format.
-
Just think of a beginner level language student trying to speak. And after the first sentence, they get interrupted with "Nope. Wrong, fix your sentence." "Nope, still wrong" "Nope". It would be quite a frustrating experience, wouldn't it?
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.
-
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!
