“A particle system is a collection of many many minute particles that together represent a fuzzy object. Over a period of time, particles are generated into a system, move and change from within the system, and die from the system.”
—William Reeves, “Particle Systems—A Technique for Modeling a Class of Fuzzy Objects,” ACM Transactions on Graphics 2:2 (April 1983), 92.

“model various irregular types of natural phenomena, such as fire, smoke, waterfalls, fog, grass, bubbles, and so on.”

“With inheritance (and polymorphism), we’ll learn a convenient way to store a single list that contains objects of different types. This way, a particle system need not only be a system of a single type of particle.”

“Just because particle systems tend to look sparkly, fly forward, and fall with gravity doesn’t mean that those are the characteristics yours should have.”

Particle: “an independent body that moves about the screen.”
location, velocity, and acceleration, color and shape, or a bitmap.
Finite lifespan creates illusion of infinite stream of particles and improves performance.
Ways to die: contact with object, leave the screen, or lifespan runs out.
Lifespan can affect transparency so that “when the particle is ‘dead’ it will also have faded away onscreen.”
isDead() method
Random initial velocity within a domain. Maybe constant acceleration.
Angular Velocity (Rotation)?

Emitter: the source of particles and controls the initial settings for the particles, location, velocity, etc.”
single burst or continuous stream, or both.

References:
http://natureofcode.com/book/chapter-4-particle-systems/