Complex Systems Summer School 2000
Project: A Three Part Survey
My primary goal here in CSSS is to be a "scout" for Sun Microsystems in
the complexity area; to ferret out if and how complex systems will soon
be of use for us, either in products and services, or in how we manage
the company. This includes looking into whether or not Sun labs should
budget for a small complexity project of some sort.
To focus a bit, I want to limit the investigation to software issues,
even though hardware concerns are clearly important for us as well.
In addition, I would like to restrict myself to Java based tools and implementations
so as to be multiplatform and to possibly uncover weaknesses/issues with
Java for complexity usage.
Due to the breadth of this goal, I've decided upon a three part survey.
1 - Java Programming
First, directly implement in Java one or two modest programs which deal
with complexity. Possibilities are:
-
Simple agent system.
-
Simulate and analyze a dynamic system: dual pendulum or damped driven
single pendulum.
-
Neural Net: Do the XOR problem.
-
Genetic Algorithm
The key issues here are whether or not Java can be effectively used for
complexity investigations and are there improvements needed for Java, either
in the language or classes. Possibly I should send out a questionnaire
to the students/faculty mail lists to get suggestions as well.
2 - Tools and Utilities
Second, use existing multiplatform (hopefully Java based) tools to investigate
complexity
-
StarLogo: Do several of Ronnie's homework examples.
-
JNet: Build a simple hidden nodes net.
-
<other packages?>
Key issues here are just how mature are packaged solutions and how multiplatform
are they.
3 - Complexity Topics in Computers and Networking
Finally, survey the field to see where computer and networking complexity
topics lurk, and define/begin a complexity-in-computing project.
This may result in the final goal above, a project for the lab.
-
Autonomous computing: routing, name serving, file serving, and so on, services
without the need of servers. The latest Gnutella for example.
Or Napster (which does, however, use a server for coordination only)
-
Computers as community: using tools like Small Worlds and 6-degrees of
separation as a tool for understanding both computer users and communities,
and sets/communities of computers.
-
Cooperating autonomous servers: Cache and proxy servers collaborating with
very simple rules to provide robust services. Example: LOCKSS
http://highwire.stanford.edu/~vreich/LOCKSSusenixpaper.pdf
This example uses a widely distributed set of cache servers to provide
libraries secure and reliable digital storage of their technical journals.
In particular, the "Small Worlds" paradigm offers an interesting way to
analyze some of these. The goal here is to gather and understand
the ways in which complexity applies to computing and networking itself,
and to define and start on a project.
