A programming paradigm in which objects (entities) are composed out of components, and are operated upon by systems. Each entity is an ID that points to specific components.