A particle system engine over OpenGl. This is a project I've been working on during my CG course. Its key component is a class called ParticleSystem that models a group of particles. Each of those is modelled by objects of a class called Particle.
Using basic position updating based on speed every frame one can simulate an unlimited amour of particles using this very simple system. Additional parameters for the class constructor give the origin area (the birthplace), the initial speed and forces that act upon the particles, along with other interesting and simple parameters.
What I like about particle systems simulation is how impressive is the implementation simpleness/resulting behaviour complexity ratio. By defining very simple rules one can define a particle system whose behaviour gets very complex and hard to predict. It gives the strong felling of 'world' creation to the programmer. Quite cool.