The initial geometry can be defined however you like.
As the program runs, the shape should change, via something like a mathematical function or physical simulation. The change should not be just a normal OpenGL transformation - you should be changing the data passed to the glVertex calls. The result should be something which is not rigid, i.e. the shape itself changes.
For a greater challenge (not required), try using lighting and updating the normals correctly as well.
Due: Tuesday, 13 November, in class.