CSCI 1300
Project: Modeling Evolution

This is one of several possible projects for CSCI 1300. The following link tells how the projects are used:

What the Program Should Do

     This program should start by displaying a basic "biomorph" like the one shown to the right. The actual drawing is described by 9 genes, described below. Along with this initial drawing should be the 18 mutation drawings (the "mutation array") obtained by either an "upward" mutation (adding one to a gene's value) or a "downward" mutation (subtracting one to a gene's value). Each biomorph in the mutation array should be only a single-step mutation from the original; i.e. only one gene should be changed by a value of one from the original drawing for the additional drawing. Two sample drawings are shown below by adding or subtracting one from gene 9.

Gene 9 Downward Gene 9 Upward
     This program should use the winbgim library and the user should be able to use the mouse to select which of the drawings to continue mutating. The program will take the drawing the user selected and redraw another screen with the selected drawing and a new mutation array. This is not a true path of evolution because it is being guided by what aesthetically pleases the user. It is called cumulative selection because some desired output is trying to be created.

     Don't assume that your pictures need to look like the examples here. The genes outlined below are only a suggestion. Be creative; make up whatever relations between the genes you desire. The program will surely astound you with the results. Feel free to add more genes to give more control to the program.

The program should perform two other actions.

  1. Incorporate a gene viewer where the user can input values for each of the 9 genes and view what the biomorph looks like.
  2. If the user right-clicks on either the original biomorph or one in the mutation array, the program should show a full screen enlargement of that picture. Somewhere, all the gene values (the "chromosome") associated with that picture should be displayed so that the user can view the biomorph again any time using the gene viewer. The user should be able to click the left mouse button to get back to the mutation array and continue evolving.


The gene values do not depend on each other; they are independently assigned. They do, however, collectively define how the biomorph will look. That is, Gene 1 should NOT be defined in terms of other genes. The interaction between the genes takes place when calculating how the structure will look.

Estimated Difficulty Level for First Semester Students:
On a scale of 50 (easy) to 500 (hard): 450

This project was inspired by the book The Blind Watchmaker by Richard Dawkins. The project was proposed by Grant Macklem.