1 Computational Approaches to Complex Systems
In the sciences, esp ecially in the study of complex systems, computer programs have come
to play an imp ortant role as scientic equipment. Computer simulations | experimental
devices built in software | have taken a place as a companion to physical experimental
devices. Computer models provide manyadvantages over traditional exp erimental metho ds,
but also have several problems. In particular, the actual pro cess of writing software is a
complicated technical task with much ro om for error.
Early in the development of a scientic eld scientists typically construct their own ex-
p erimental equipment: grinding their own lenses, wiring-up their own particle detectors,
even building their own computers. Researchers in new elds have to be adept engineers,
machinists, and electricians in addition to being scientists. Once a eld b egins to mature,
collab orations b etween scientists and engineers lead to the development of standardized, re-
liable equipment (e.g., commercially produced microscop es or centrifuges), thereby allowing
scientists to fo cus on research rather than on to ol building. The use of standardized scien-
tic apparatus is not only aconvenience: it allows one to \divide through" by the common
equipment, thereby aiding the pro duction of repeatable, comparable research results.
In complexity research, at the Santa Fe Institute and elsewhere, we rely heavily on
computers in the course of our investigations. We sp end a lot of time constructing our
own exp erimental apparatus in software, the computational equivalent to blowing our own
glassware. Unfortunately, computer mo deling frequently turns go o d scientists into bad pro-
grammers. Most scientists are not trained as software engineers. As a consequence, many
home-grown computational exp erimental to ols are (from a software engineering p ersp ective)
p oorly designed. The results gained from the use of such to ols can be dicult to compare
with other research data and dicult for others to reproduce b ecause of the quirks and
unknown design decisions in the sp ecic software apparatus. Furthermore, writing software
is typically not a go od use of a highly sp ecialized scientist's time. In many cases, the same
functional capacities are b eing rebuilt time and time again by dierent research groups, a
tremendous duplication of eort.
A subtler problem with custom-built computer models is that the nal software tends to
be very sp ecic, a dense tangle of code that is understandable only to the p eople who wrote
it. Typical simulation software contains a large number of implicit assumptions, accidents
of the way the particular co de was written that have nothing to do with the actual mo del.
And with only low-level source co de it is very dicult to understand the high-level design
and essential comp onents of the mo del itself. Suchsoftware is useful to the p eople who built
it, but makes it dicult for other scientists to evaluate and repro duce results.
In order for computer mo deling to mature there is a need for a standardized set of well-
engineered software to ols usable on a wide variety of systems. The Swarm pro ject aims
to pro duce such to ols through a collaboration between scientists and software engineers.
Swarm is an ecient, reliable, reusable software apparatus for exp erimentation. If successful,
Swarm will help scientists fo cus on research rather than on to ol building by giving them a
standardized suite of software to ols that provide awell equipped software lab oratory.
2