A graphic interface could be a didactic tool. Users could adjust the variables to see how the interactions of organisms propagate over lifecycles, and possibly watch evolution in action. However, this is a secondary consideration to the research, and will only be developed if the results of the experiments warrant it.
To learn more about evolutionary theory and seek possible concrete explanations for the diversity of life. To practice programming - working on a semester long project alone will help me improve my programming skills. The inherent interest in the project will motivate me to program and to discover new areas of programming.
If we can find mathematical relationships between the number of environmental factors and the number of species, we may be able to establish a method for cataloguing a species rich environment. For example, there are organizations which go into endangered land and do species counts. If a certain number is met, they declare it a global treasure and can often influence governments to help establish preserves. This is mere speculation, but it posits that we could arrive at better estimates of the number of species in a given area or the world, and help raise awareness to the apparent accelerated loss of species world-wide. Current estimates range over 100 million species; only 1.75 million species have been catalogued.
To commence the programming, I will create my genetic material, my genes. These will be represented by strings of the characters C, G, A, and T, the nucleotides bases of DNA. The specific sequences will be selectly randomly. These will replicate and mutate according to specifications gleaned from nature.
For the environment, I will create similar sequences. For the unchanging environment, these will be defined arbitrarily. For the randonly flucuating environment, they will change randomly. And for the interacting environment, they will be based on the current conditions of the actual genes. It may seem at first as if the genes and environment are virtually identical. However, the genes will be mutating as genes do, and the environment will not be mutating. It will be modelled after the actual behavior of actual environments as closely as possible. As for the interaction, this will be established by aligning the environmental sequences with the genes. If there is a match of environmental code found within a gene, then the property of that environmental condition will be applied to the genes which contain that sequence. Experiments will be run with the environment in the different states listed above, and comparisons will be made between the different tests run in the different environments.
These experiments will hopefully yield results which tell us something interesting about evolution, especially speciation. An example of an interesting result would be if we found clustering of genes into groups. Measuring speciation will be difficult. First, I must define what speciation means. My current guess is that I will look for groupings of similar sequences. If clustering is a result, and that clustering continues more and more - especially as the environment flucuates more - then we will have observed something which is analogous to speciation. Controlling the experiment too much is a big problem, so I will try to find the appropriate amount of randomness (usually more than one would guess at first glance). By confining my influence to local parameters, and if we get global patterns out of these local interactions, then we may have stumbled upon something really fascinating.
I did a lot of preliminary research into evolution during January and February and I'm now planning out what I am going to program and how I will program this. The next week or two will consist of the final planning stages before the programming actually begins.