Used the laser cutter to make a holder for my class set of spirographs — for the lessons I like to do my students need to know how many teeth the gears have. They write a program that produces the same curve using turtle. (with older students we do the trig, which I just call “magic circle functions” for the grade fives)
This will make it all go much smoother!
This is 8 sets packed into one box!
#math #mathEducation #teaching #spirograph #mathematics #k12 #hypotrochoid #trigonometry
@futurebird If you had been my teacher 50 years ago I think my career path could have been very different
@futurebird I did manage to avoid being a secretary by boycotting typing in high school though!
@futurebird HUH this is making me realize what a missed opportunity it is that the number of teeth is not *visible* to a child (or adult!) playing with these
(which I imagine is the *point* here, nice simple solution!)
@SnoopJ I would love if there were color coded rings with big bold numbers and their prime factorizations. Maybe the colors could hint at their common multiples… Perhaps I will design such a set this summer.
@futurebird @SnoopJ oooh one could 3D print such a thing
@SnoopJ @futurebird I have a hazy, possibly-false memory of using a magic marker to make the tiny numbers more visible.
@futurebird my very first exposure to programming! low-number grade, *wanted* to do spirograph, got as far as stars before the Logo machines disappeared as mysteriously as they came. everything since has been chasing that high
I mean: I had some pretty good teachers, but having had somebody like you, would have been a bliss.
@futurebird
The spirograph turned 60 this year. Still a classic. That and a similar prop from a science class helped get some of the intuitive but not intuitive stuff about gears
Yeah. I tried those. I don't think our printer produces a hard enough plastic to make it work well. The gears caught too much.
If I design my own they will be laser cut. Possibly from metal. (I have a steel set that's extra large that works rather well.)
The plastic they use in the older versions of the toys is harder than the new ones, so if you want to do this either get it laser cut or buy used!
I'm kind of a spirograph snob... just a little ...
@futurebird You're a teacher who understands the assignment.
@futurebird Math was always a struggle for me, all the way through college. I wish my teachers had been this inventive!
@futurebird This is pretty darn cool, myrmepropagandist!!
@futurebird oh cool! My kid would love that
@futurebird what a dream it must be to have a teacher like you! Dusting off the spirograph to explore this with our kids
@futurebird wait, you have a gold spirograph?? Such fance!
@futurebird I still have kids in their final school year who still thank of them as "magic circle functions"!
@futurebird I loved doing logo Spiros , though we didn't get computers in school till 8th grade. I was a TA for a 2nd grade section and counted a win if all the equipment made it intact for the next class
That's awesome Magic circle functions
They go "up and down" just so that you go "round and round"!
@futurebird wonderful! Do you publish more about this somewhere? I'd love to have a look at the code, if possible!
I have not made the code neat enough for other teachers to use yet, though I will some day. But here is the sketch we use in grade 5
This is the code I wrote with my class, it's kind of a mess. I don't make them worry about the other tab called "extra math.py" they just have to understand and combine the two circle position functions together and also use the gcf of the tooth ratios to calculate the number of cycles needed.
@futurebird @villares I didn't analyze your code in depth, but at a glance it seems pretty reasonable for this kind of thing.
The use of gcf though does suggest that there probably is a connection to the Stern-Brocot tree and/or modular group that is at least somewhat interesting.
It's more basic than that. If you have gears and you want them to return to their starting position again the ratio of the circumferences (which is the same as the ratio of the number of gear teeth) tells you all you need to know: how many times you need to go around, and how many lobes the final design will have.
I have them write the function to reduce the fractions themselves, so it's done in a very naive way.
@futurebird @leon_p_smith @villares this is really cool
@futurebird @villares The Stern-Brocot tree is suprisingly simple! One way of looking at it is that it "undoes" the gcf function.
So if you start with an "ideal" ratio that you want your gears to have, then you can use the Stern-Brocot tree to find fractions that are good approximations of the ratio you are seeking. This is approximately what Achille Brocot himself developed the Stern-Brocot tree to do; he was a partner at a small clockmaking firm in Paris, and used the Stern-Brocot tree to help select gear ratios in some of their mechanical clock movements.
So there's gotta be a hundred different ways to build off of this lesson and dip your students toes in some very interesting mathematics, from modular arithmetic and number theory to who knows what all else.
https://www.cs.ox.ac.uk/people/jeremy.gibbons/publications/rationals.pdf
I'm not subjecting innocent children to perl!
(but this looks very interesting)
Haskell actually. The paper's not so different in spirit from your expression of the Euclidean Algorithm in the math-extra file.
Though maybe you have a specific idea how to "clean up" your code, the only thing that sticks out at me would be to emphasize vector arithmetic... but... I can see why you might actually want to avoid that in this specific lesson, depending on your aims. If you just provide a position function that combined the results of xpos and ypos in a vector, then you might be hiding too much in "magic".
@futurebird @villares do they copy what you write? Could they write any of this by themselves?
@futurebird @villares how much python have they seen/written before? (HS CS teacher here!)
They have had at least 5 class periods doing python with me. All of them have a LOT of experience with scratch from grade 4 ... and to my delight the skills from doing that do seem to transfer.
The project they do before this one involves drawing a maze (on paper) then I scan it and they make the turtle go through their maze.
@futurebird @villares The transfer from Scratch is good to hear - that doesn't seem to be universal.
Is class an elective of some sort, or does every kid have to do it?
To the school's credit it's NOT an elective! I get to work with all of the 5th grade students. But I only get 8 classes and it's only once a week. But that's more CS than many places have.
Now if only we could get a non- elective CS class in grade 8 we might have more than 10 students signing up for the advanced CS courses where we bring out the big guns later.
I used to be kind of scared of scratch if you can imagine that. But, I kind of like how it lets their programs be so messy with functions and stray variables just lying around. I think it can be used to teach the concepts of variables and functions rather well.
Iteration? Well... that they don't seem to get until I start working with them.
@futurebird I can! Although mine is more a snobbishness, I suspect :/
Trying to do string manipulation in Scratch once has left me permanently scarred. The investment in a language is too much for it to have any significant dead ends.
If the previous classes have laid a solid foundation, then you can move onto more complex ideas, like iteration?
Do you have any disengaged/ "I can't do maths" kids?
I do have "I can't do math" kids, but I just say "this isn't math" and do not elaborate.
This is a white lie.
@futurebird LOL! A bit more than that, but it gets around the blockage in the head.
How big are the classes? And what are they coding on?
They code on https://trinket.io/python/ which I have mixed feelings about since I'd rather they just run the code on their machines but I have not found a frictionless way to set that up on chromebooks.
My older students work on macbooks and I have them run all their code on their machines.
My classes are 14-20 students. We have a hard 20 student limit for all classes and I think that should be THE LAW.
@futurebird Amen to that class size.
I am _not_ a fan of chromebooks, on privacy grounds. There seem to be ways of popping the hood on chromebooks, and getting to a Linux level interface - seems to depend on how they're administered.
@futurebird Trinket looks fine - they're learning a real language, and that sets them up solidly for the rest of their lives, really. I use a Runestone.Academy course (thinkcspy) with skulpt and some other tools, and as a teaching platform, it's great.
Have you seen Thonny as an IDE? Written specifically for teaching - it's debugging for topics like recursion is awesome.
I love Thony! Very clean and uncluttered.
@futurebird @grant_h maybe you'll enjoy working with #py5? It has the Processing drawing vocabulary. I use it in all my classes (but mostly with adults) and "family" activities at the community center where I work part-time. So I have made a Thonny portable for windows with it pre-installed https://abav.lugaralgum.com/como-instalar-py5/index-EN.html
And I have this online thing for emergencies, based on pyp5js: abav.lugaralgum.com/pyp5js/py5mode
I'm just terrified they will suddenly decide to fill it with ads and nonsense one day. I don't like running code in a browser anymore. Not after what happened with replit.
@futurebird The Runestone site is a free/ subscription, and I have started budgeting an amount each year for such sites - I want them to keep running!
There is Pyodide (https://pyodide.org/en/stable/) but is seems early days yet.
I'm not convinced that teaching iteration with scratch works well. It's too buried and confusing... in some ways it's worse than with a linear program.
But I am willing to be talked out of this notion.
@futurebird @grant_h @villares The thing I think is coolest about scratch is that it's inherently multithreaded. When I was first learning programming, that kind of programming was such wizard-level stuff that even professionals didn't entirely have a handle on it, and languages usually didn't have support for it built in. Now it can be part of an educational kid's language.
My least favorite thing about it *was* that when I was first playing with it, when my daughter was a little kid, you couldn't define your own functions (there were forks of it that added that). But now you can.