% -*- Mode:Text -*- 

\chapter{Plan of work}\label{sect.plan}

Our objectives will force on us a full and varied agenda encompassing
several disciplines. The main types of activity will be
 \begin{itemize}
	\item Collaboration with materials scientists to develop specific programmable-matter applications.
	\item Development of general methods and techniques for
programmable-matter modeling.
	\item Basic software development for \cam-8.
	\item Programmable-matter software utilities.
	\item Technology dissemination
 \end{itemize}

These types of activity are discussed in more detail below, with
representative examples.


\section{Collaborations with materials scientists to develop specific
programmable-matter applications}\label{sect.collaborations}

The best way to insure that programmable matter will grow to be an
effective scientific tool is to develop it under the challenge of
realistic applications. To this end, we plan to establish (or
continue) a number of collaborations with the ``owners'' of
appropriate representative problems.

As we mentioned in the Introduction, we have been collaborating for a while with Yaneer
Bar-Yam (Boston University) in the modeling of polymers dynamics.  We
shall continue our long-term collaboration with Charles Bennett (IBM
Research) on a number of theoretical materials science issues.  Gary
Doolen and Brosl Hasslacher (Los Alamos National Lab.) have been
strong supporters of the \cam-8 project, owing to their involvement in
lattice-gas hydrodynamics; we are looking forward to exploring with
them its potential in this field.  Under the auspices of Jane
Alexander (DARPA) and Larry Cooper (ONR) we will contribute cellular
automata modeling expertise to a project aimed at domesticating
quantum effects for fine-grained parallel computation; among likely
collaborators are Gary Frazer (TI), Pradip Bakshi (Boston College) and
Dimitri Antoniadis (MIT). We also plan to collaborate with Daniel Rothman
(MIT) on multiphase flow modeling, with Jeff Yepez (Air Force Philips
Research Lab.) on issues of micrometeorology, and with Birker Nihat and
Roland Netz (MIT) on Monte-Carlo techniques in renormalization group
calculations.

Other collaborations under consideration are: cellular-automata based
\vlsi{} compaction techniques (Sam Kim, RPI); real-time image
preprocessing (Vincenzo D'Andrea, Parma, Italy); annealing rules
involving long-range interactions (David Griffeath).


\section{Development of general methods and techniques for
programmable-matter modeling}\label{sect.methods}

In contrast with external collaborations (\sect{collaborations}),
which will chiefly be characterized by the nature of the target system
(``Polymers,'' ``Fluids,'' ``Crystals,'' etc.)  our in-house work will
chiefly be organized around programmable matter {\em methods}, such as
``Representation of potentials,'' ``Coarse-grained averaging,''
``Monte-Carlo techniques.'' This aspect of the research has been detailed
in \sect{making}.

Our group has a good, long-term record at both proposing original
methods and at developing them in a disciplined way until they are
mature for
applications\cite{biafore92,margolus-bbm,cams,super,smith-topo,smith92,smith92a,toffoli-thesis,cam5,pde,toffoli-tll,cambook,toffoli-ica,vichniac}.
Moreover, there is a large amount of recent research in applied
mathematics, mathematical physics, and computational physics that is
relevant to our goals (e.g., \cite{wolfram-book,doolen,hasslacher})
and that we would like to assimilate into programmable-matter
methodology.

\section{Basic software development}\label{sect.basic-software}

An important element in making the programmable matter laboratory
accessible to a wide range of scientists will be a clear, expressive,
and flexible user interface. We aim at a software environment that
will directly support the metaphor of ``designing and conducting a
physical experiment.'' This environment will be accessible through an
appropriate interactive language, which we shall define and for which
we shall construct the interpreter/compiler modules.  Our competence as
computer scientists will best be revealed by how much the users will
{\em not} have to strive to become computer scientists themselves.

Low- and intermediate-level software for \cam-8 will derive from that
already in use for in-house development. A substantial fraction of the
target software will emerge from there by accretion and refinement, as
well as from generalization of ideas developed for the \cam-6
programming environment. However, what remains to be done, especially
in terms of a high-level environment and of professional-quality
integration of the various levels, is a huge task.

We shall develop by ourselves a basic set of features for the
programming environment. After that, we shall explore ways to involve
additional talents and resources in the project, perhaps with the
support of a major user or manufacturer.


\section{Programmable-matter software utilities}\label{sect.utilities}

The issue of software utilities has already been mentioned in
\sect{heat-bath}. Since \cam-8 is, to its host workstation, just a
special-purpose co-processor, all conventional operating-system tasks
(e.g., file-access) are left to the host and its operating system.
Here we are interested in domain-specific utilities, and especially
those to be supported primarily by programmable-matter resources.

Typical functions of this kind would be
 \begin{itemize}
	\item Coarse-grained averaging of fine-grained data, for instance
to obtain, in a lattice gas, a macroscopic map of flow direction
and speed.
	\item Computing space- and time-autocorrelations.
	\item Providing heat baths, external fields, and other
off-the-shelf components of a model.
	\item Monitoring the progress of an experiment in time
against set reference marks; driving an experiment along an established
time schedule (e.g., thermal cycling).
	\item Reformatting of simulation data for display purposes.
 \end{itemize}

As designers and experienced users of the hardware, we shall initially
provide a representative set of such utilities. We expect that many
more will be developed by the users, and will eventually find their
way, with some adaptation, in subsequent software releases.


\section{Dissemination}\label{sect.dissemination}

\subsection{Hardware dissemination plans}

For the moment, we shall start exploring the uses of programmable
matter with copies of the current hardware placed in a number of
``beta-test'' sites. Meanwhile, we shall consider plans for
further dissemination. 

Though we do not intend to use the requested \doe{} support
for hardware design or production purposes, certain issues
will be kept in mind while developing methodology and documentation.

\medskip

For example, with only minor redesign it would be feasible to produce
a very inexpensive, one-module \cam-8 plugging directly in an SBus
slot. Such a product would accelerate the diffusion of
programmable-matter techniques.

A more ambitious possibility, especially attractive in the context of
larger configurations (hundreds of thousand of modules), is putting
the current \cam-8 \vlsi{} circuit inside an otherwise standard \dram;
this would require the collaboration of a \dram{} manufacturer. Just
by itself, this step promises to reduce size and power consumption by
a factor of three.

\subsection{Organized educational activities}\label{sect.education}

Very early in the project we shall design a brief tutorial
course (three seminars) on programmable matter, to be given at the
site of each new \cam-8 installation. The purpose of this course will
be not so much to indoctrinate the new ``parents'' of a programmable
matter ``baby'' (by then, they will already be familiar with the
subject), as to help them introduce to their neighbors (department,
laboratory, students) the new addition to their family.

Later on (before the end of the first year) we plan to invite
all the current \cam-8 users to an
informal workshop here at MIT, so
as to learn more about one another's applications, exchange shop talk
and software, collect feedback, and discuss new plans.


\subsection{Assistance to individual users}\label{sect.assistance}

During the first stages of dissemination of programmable matter
methodology, when a more formal support network will still have to be
established, it will be hard for us to turn down calls for help from
new users. Also, we shall welcome people who come to see us for
informal tutorials, demos, and, as it were, ``homework grading.''

Of course, such an effort will have its own rewards, since it is
exactly this kind of assistance that helps spot inadequacies in the
documentation, misperceptions as to a product's features or intended
purposes, etc.\ (We treasure a copy of the \cam-6 manual annotated by
Richard Feynman with phrases such as ``I understood everything up to
here.'' ``You gotta explain this better!'' ``What do you mean, there
are no floating-point numbers in Forth?'')


\subsection{Scientific and technical documentation}\label{sect.documentation}

Comprehensive documentation is, of course, a vital factor in the
dissemination of a methodology. The amount of effort we devoted to
documentation for earlier projects speaks for itself.  \Cam-6 was
accompanied not only by a {\em User's Guide} and a {\em Hardware
Manual}, but eventually also by a book, {\em Cellular Automata
Machines---a new environment for modeling} (MIT press) which has
become a standard introduction to modeling by cellular automata.

We have already started distributing sample sections of \cam-8
documentation (here is some feedback: ``\ldots Let me congratulate you
or whoever is writing the manual on its clarity.  Would that all
hardware manuals were written that way!...''). Indeed, much hardware
documentation was produced {\em before} the actual hardware
development, in order to set common goals for our team and coordinate
the design process.

As in the case of software, we are aware of the immensity of the
documentation task; again, we plan to produce the essential document
so as to set an example, set standards, and give guidelines. We hope
that as the field develops and the needs for documentation grow, so
will the pool of talents and resources among which this task can be
shared.

\endinput
