A scientific and technological effort to identify
methods for obtaining coherent behavior from the cooperation of large numbers of unreliable parts that are interconnected in unknown, irregular, and time-varying ways
techniques for instructing myriads of programmable entities to cooperate to achieve particular goals
engineering principles and languages that can be used to observe, control, organize, and exploit the behavior of programmable multitudes.