@everyone - thanks for your input. as often is the case, I probably should have provided a bit more context to start out with:
I would like to design a series of 'processor nodes' which can execute parallel algorithms. The reason to have physical elements is in order to have a fast and intuitive way of exploring interactions between the algorithm chosen and the topology of the nodes.
e.g. "it works when arranged in a square, what happens if I arrange them in a triangle shape?" imagine being able to prune a neural network by physically removing nodes and seeing the effect of the pruning in real time...
The goal is to create a tool which helps visualize and better understand parallel algorithms.
In the end, I do not need to actually 'reprogram' the individual nodes. Each node will be continuously executing a function - in order to do the type of rapid iterations I have in mind, I need students to be able to tinker with that function. Changing details of the code has to be effortless enough for this to retain some element of fun and exploration.
@raschemmel
you are taking me a bit too literal. I do not necessarily mean 'program them all at once'. I mean 'program them all in a single step':
I want to be able to edit my code and then click 'upload' without having to repeat the process for each and every node.
having said that, simply by connecting the signal lines, there is no reason not to talk to multiple nodes simultaneously (I have done this both intentionally and by accident in the past by writing super sloppy i2c code using the wiring library)
@graynomad
the nodes would be 'all in the same box'.
you are suggesting that I use a separate eeprom chip for storing code? would that not simply defer my problem? i.e. instead of talking with an arbitrary number of controllers I now communicate with an arbitrary numer of eeprom chips? Would you mind elaborating on your suggestion? I am not sure I fully understand it.
Thanks PeterN for digging up those threads and Crossroads for the suggestion. I had seen those earlyer, but they feel a bit too much like a 'hack' to me. I am hoping to hand over this plattform to software guys and I am hoping for the platform to be stable enough, so whoever is using this to experiment can focus on the algorithms. I will try doing it this way, but somehow that feels like a solution prone to cause problems somewhere further down the line.
Right now I am tending towards the idea of not actually reprogramming them, but rather changing parameters via i2c. But I am curious in other solutions - maybe there are other microcontrollers which would be better at this thing, or maybe I am not thinking about this in the right way. I don't have any formal training in any of this, so sometimes I miss the obvious.
Thanks & Regards
P.