Wanted: Advice from CS teachers
-
@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
-
@futurebird i think Microsoft in the 90s set up this attitude towards computers that still lives today: “it’s your fault if it doesn’t work”.
I never had to use Windows — ever — and every time I would sit down to try, something glaringly bad would be right there interfering.
And I’ve been a dev and UX person for nearly 40 years.
I wouldn't say exactly "it's your fault" but more "there is no hope".
-
"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.
There's a famous anecdote about Yachar Kemal, the uber-famous turkish author : one day when he was visiting the countryside, a shepherd¹ asked what was all the ruckus.
Another villager answered "you don't know ? the guy who wrote 'Memed, my hawk' is here, he's visiting !".
And the shepherd was completely puzzled :"but... nobody wrote 'Memed, my hawk' ?"
(in the sense of "it exists, it hasn't been created, and especially not by a mere human").¹IIRC
-
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
Also, when you post such interesting questions that will generate a lot of insightful answers, maybe you'd want to tag them ?
So that they can benefit other people... -
@futurebird@sauropods.win Yes, I would say so. Functions in math are different from functions in code. Mathematical functions look more like lookup tables or dictionaries. One sticking point is the flow of control: a function has a block of instructions that are not executed at the point where they're written in the source code. This is really confusing for some people, especially if they've just been taught that computers go through a list of instructions one by one, executing each in sequence.
Add in functions that have side effects, functions that don't return a value (procedures), functions that trap the rest of the execution (continuations), etc., and you're well outside of what most people understand mathematical functions to be like. The mathematical sine function can't make a network connection or write to a file or...
You can sometimes suss this out by comparing a function to a dictionary (or similar lookup type data structure). Those don't involve changes in the flow of control, and students tend to grasp what they're doing much faster. Students who grasp dictionaries sometimes cannot transfer that understanding to functions because of the flow of control issue, I think, so it can be helpful to probe whether they understand one but not the other and try to figure out why.As noted here https://librefaso.pollux.casa/sjbm2023_semaine6.gmi when using Gcompris' "programming labyrinth" to teach basic programming concepts (before teaching Scratch) to primary school kids, the main problem was indeed the function.
Some kids grasped it intuitively, but those who didn't were stuck completely and I wasn't able to help them.
Would you have advises on how to help them understand, in case I ever have another chance at such teachings ? -
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.
I'm not a teacher and have done all of my programming tutorials with undergrad/grad students I'm supervising, but I wonder if modelling that you also get those errors is helpful?
I really like live-coding with students and when I'm the one typing, I am showing them that I make these mistakes as well and then show them my process of dealing with them. Not only decoding error messages, but also telling them when I forget the arguments I need and showing them that I check the function help, and showing them that I write tests and saying out loud, "okay let's check it did what we think it did". Lots of "Hm, I should've got a dataframe with the same number of rows as X but I've ended up with a scalar, that's not right", or "Oops, every value is NA! Let's try again", etc. Also googling my questions and modelling how to select which answers to try and how to check they are what they say they are.
If you could engage them in watching you code, I can imagine it being fun! Like solving a puzzle all together.
-
B brolf@chaos.social shared this topic