The Ten-Minute Icosahedron
Ivy had just begun a 14-day experiment: one hour of learning every day.
In the first class, we started with the golden ratio.
Ivy already knew the term, but working through the mathematics revealed an interesting gap: her geometric intuition was considerably stronger than her algebraic fluency.
Together, we went from a golden rectangle to the equation
r^2 + r - 1 = 0
and discovered
r = (-1 + sqrt(5))/2 = 0.618...
Then I asked her to place golden rectangles perpendicular to each other, with their centers coinciding.
Two worked.
Then three.
She had to think, notice a geometric inconsistency, try again, and eventually discover the correct placement.
Without being told what we were making, she had arrived at the framework of an icosahedron.
We then opened Desmos 3D for the first time and placed its 12 vertices in space.
Finally, with only about 15 minutes left in the class, Ivy encountered p5.js 3D for the first time.
For homework, I did not tell her to “make an icosahedron.”
I said:
“This is gorgeous! I want to watch it again and again.”
Then:
“Homework: connect vertices as you did manually on whiteboard. And you may want to improve the code a bit wherever you can, for example reducing duplications if possible etc.”
That was it.
When I connected Ivy for Class 2, she had already finished the homework.
The 12 vertices were sitting in her p5.js world like 12 stars shining in the sky.
She had manually translated each point into 3D coordinates.
Then during class, we started changing the way she represented those points.
Instead of repeatedly embedding coordinates directly inside translate(), each vertex became a piece of data:
let p0 = [100, (sqrt(5)+1)/2 * 100, 0]
and then:
translate(p0[0], p0[1], p0[2])
The points were no longer just pieces of code.
They had become objects that the program could refer to.
Then we connected them.
The three perpendicular golden rectangles appeared in different colors.
Then the remaining edges were added.
The geometry that had existed first on a whiteboard and then as 12 isolated points in code suddenly became a complete three-dimensional structure.
And Ivy could rotate it.
She could see the icosahedron she had helped construct.
But the real surprise came next.
I gave her the next homework without even using the word “icosahedron”:
“Connect vertices as you did manually on whiteboard.”
About 10 minutes after the class ended, she had finished it.
She connected the remaining vertices, completed the entire structure, made the 3D object spin, recorded a short clip, and shared it in her family group.
I saw the clip and simply replied:
“Icosahedron!!!”
😂
The beautiful thing about the clip is not merely that the icosahedron is correct.
It is that Ivy kept going after the class was over.
There was no teacher sitting beside her.
No one told her:
“Now do this edge.”
“Now add that edge.”
“Now make it spin.”
She had already crossed the most important boundary:
the project had become hers.
In Class 1, the mathematical object was something Donald was gradually revealing to her.
By the end of Class 2, it had become something Ivy could continue developing independently.
And there was another small but meaningful development that evening.
Ivy had never even used Khan Academy before.
She registered an account and completed the Grade 2 Course Challenge with 26/30, then the Grade 3 challenge with 28/30.
At one point she naturally asked:
“Why do we do this?”
The exercises themselves looked elementary, but they were not meaningless for Ivy.
Having arrived in Canada only a year earlier, she had never experienced the native Grade 2–8 curriculum.
That evening she learned how a Khan Course Challenge works, encountered unfamiliar mathematical diagrams repeatedly until they became familiar, and even ran into strange mathematical language such as “1 seven” and had to figure out what it meant.
So the same high-frequency environment was doing two things simultaneously:
building new mathematical foundations and building the confidence to enter unfamiliar territory without needing to understand everything beforehand.
At the end of the class, Donald asked:
“Are you tired? Or do you want to try the 3rd grade?”
Ivy's answer was immediate:
“Sure.”
The class was extended by another 15 minutes.
The ten-minute icosahedron reveals something much more important than programming speed.
Ivy is beginning to experience the full cycle of computational creation:
see a structure → model it → represent its parts as data → connect the parts → visualize the relationships → improve the model → create something independently.
She has not learned arrays of edges, loops, graph theory, recursion, or other advanced programming abstractions yet.
And that is perfectly fine.
In fact, the current primitive code is valuable.
There are now dozens of repeated line(...) statements sitting in front of her.
Eventually she may ask:
“There must be a better way to do this.”
That question will create the need for the next abstraction.
This is the learning philosophy behind the experiment:
Don't introduce a programming concept merely because it appears in a syllabus.
Build something interesting first.
Let the limitations of the first version become the reason to learn the next idea.
And perhaps most importantly, let the student discover that learning does not have to stop when the class ends.
The most encouraging line of the entire evening wasn't a Khan score or a line of code.
It was Ivy finishing the class and continuing on her own.
Ten minutes later:
a spinning icosahedron. 🌟
A student encountering 3D programming for the first time can move from mathematical geometry to a self-created, spinning icosahedron within two classes.
Let mathematics lead into programming, let the project create the need for new programming ideas, and give the student enough continuity to keep working while the problem is still alive in her mind.
The goal is not simply to teach Ivy more code. It is to help her experience the moment when something learned becomes something she can build, modify, understand, and continue creating entirely on her own.