Neural Nets and the (much maligned) Science Fair
First off. If the social studies teacher down the hall makes another Science Fair/Fare pun, I swear to ever deity that I will not come back to school, ever.
So, I have a love/hate relationship with my school’s science fair. I’m nominally in charge, but all that really means is that I’m the one who gets reimbursed for getting the Subway party platter. Our science fair is a required event for all sophomores, and, as with most mandatory things, you get a, um, well… spectrum.
All arguments aside for or against forcing student to do inquiry, the science fair really does allow for some totally kick ass projects that otherwise wouldn’t see the light of day. Sure, you get your typical smattering of how-does-music-genre-effect-study-skills kind of stuff, but you also get the following:
A student asked me if I would teach her how to program a rudimentary neural net so that she could give it diseases.
Sometimes you just start to beam so much that your smile feels like it’s going to crack your lips like a chapped marching band trumpeter’s in November.
She had never programmed before, so I decided to start her off with some simple code and let her modify.
Here’s the code, it’s php.
This version is very simple. My student is supposed to edit the code to reflect a better model, and she’s also learning some basic programming, so ease up on the hey-you-comment-crappily remarks.
…and, it becomes a project:
So, now that my little cherub is off and running, I can’t help but find myself enamored with the idea of making a project out of this for myself. It also has occurred to me, that many of you that also teach biology, might want a neural net lab online to set your students on.
So, here it is:
The back end program works like this: Create a packet (or a random number of packets), set the originating neuron and the target neuron, move all the packets, kill packets that get stalled (i.e. have no free axons to move to), check for arrived packets. Rinse and repeat.
The option to create smart packets allows packets to look for more than one possible axon from their current location, which can’t happen in the above net, but could in many others.
I have a few students currently taking my code and adding things for their projects. One girl is adding a timing feature, which makes some axons slower than others (i.e. aging). Another student is allowing axon connections to change during the simulation (as more packets arrive, more connections are made; learning)
I really think there’s something to this student-teacher collaborative code thing; especially in non-programming courses.