She Kept Her Promise—And Kept Going
A few days ago, Enning finished her Chinese chessboard assignment quickly.
After drawing her first star, she told me:
“I plan to try a few more.”
She kept that promise.
She went on to make three and a half stars on the board.
But today's homework was different.
After we had discovered drawStar(col, row), I asked her to take the next step: create a function for the half-stars at the edges of the Chinese chessboard.
Normally, Enning finishes her homework much faster.
Today, however, the class had ended about nine hours earlier, and it was already around 9:30 pm in her local time.
Then her submission arrived.
And before I had even read the code, the screenshot itself moved me.
Enning had not simply copied the existing drawStar() function and changed a few coordinates.
She had created her own abstractions:
function halfdrawer(col, row) {
...
}
function halfdrawStar(col, row) {
...
}
She recognized that the half-stars on the two sides of the board were related, but oriented differently.
And, just as with the full star, she gave them parameters:
(col, row)
Then she used them at the appropriate edge positions:
halfdrawStar(0, 3);
halfdrawStar(0, 6);
halfdrawer(8, 3);
halfdrawer(8, 6);
The names aren't yet polished.
The code can certainly be improved.
But that isn't the point.
The abstraction was hers.
This is what made the homework special.
A few classes ago, she needed considerable guidance just to understand why calling drawStar() twice would be useful.
Now she was looking at a new problem and independently asking herself:
What is the repeated structure here?
She found it.
She separated it into functions.
She parameterized the location.
And she used those functions to complete the boundary cases of the board.
She had moved from using an abstraction to inventing one.
And she did it on her own time, long after class had ended.
That evening, she finally sent me:
“Sorry for handing in the assignment late.”
I looked at the screenshot and replied:
“The screenshot looks wonderful. Good job, Enning.”
She answered with a big smiley and:
“thankyou”
And then went to bed.
Sometimes homework tells us much more than whether a student completed an assignment.
Today's homework showed ownership.
The goal was not simply to finish the Chinese chessboard.
She stayed with the problem long enough to make the idea her own.
There was also something very Enning about the whole process.
She can be careless.
Sometimes I raise my voice:
“Again?”
She laughs:
“Oops, ha ha.”
Then she fixes the mistake.
Again.
And again.
There is something wonderfully healthy about that cycle.
She doesn't need to be perfect.
She needs to be willing to notice, correct, and continue.
Tonight, she continued for hours.
And when she finally finished, she didn't just submit something that worked.
She submitted something that made her teacher smile before he had even read the code.
A student can move from learning an abstraction to inventing her own abstractions surprisingly quickly.
Give her a real problem, enough room to struggle, and enough trust to let her discover the structure herself.
Because the most meaningful learning sometimes happens after the teacher has left the room.