The Art of Computational Science

Frequently Asked Questions

© 2003-2005 Piet Hut and Jun Makino Back to ACS home page.

Some frequently asked questions:
What is the Goal of the ACS project?

Our long-term goal is to establish a community of professionals and amateurs, interested in making science available in a hands-on way, loosely modeled on the various open-source communities, of which the Linux project is probably the most visible one.

Science may well be the oldest and largest open source project of all times. Since the days of Galileo, more than a dozen generations of scientists have worked together to produce a public body of knowledge about the natural world that is unique both in its accuracy, and in the fact that it transcends traditional boundaries of cultures and belief systems.

The ACS project aims at rekindling the spirit of the eighteenth-century enlightenment movement, where educated lay people were invited to join professional scientists in their explorations. The main shifts are from traditional salons to the world wide web, and from tabletop experiments to laptop computers.

How can I Play with an N-body Code?

A quick way to get started is to read our older on-line book Moving Stars Around. There you will find a complete introduction, in 250 pages, illustrated with C++ codes. Starting with very simple integrators, but moving on to the Hermite scheme, the readers will be invited to perform cold collapse experiments, to study binary formation, and to adapt the codes for their own purposes.

A more detailed approach to working with N-body codes can be found in our multi-volume development series for the Maya open lab, where we are developing a state-of-the-art software environment for simulating dense stellar systems. Here, too, we start from scratch, with simple integrators for the 2-body problem, before moving on to a large choice of higher-order integrators for the general N-body problem.

Since our preferred computer language, Ruby, may not be familiar to our readers, the Maya series introduces the language together with the math, physics, and computer science needed for studying the N-body problem.

Why Use Ruby?

Ruby combines the flexibility of a scripting language with the power of a fully object-oriented programming language. For a large-scale software project, such as the development of the Kali code, it is essential to use data encapsulation, such as offered by C++. However, when developing new code, it is impossible to know beforehand what the best data structures will look like. Rapid prototyping, all but impossible in C++, is equally essential for developing code that is well-thought-out and easy to read, not stuck in a legacy of historical data design decisions.

Is Ruby Fast Enough?

No, Ruby by itself is too slow for serious scientific simulations. However, it is straightforward to replace a few time-critical lines of Ruby code with C code, thereby speeding up the original Ruby code to a speed that can approximate that of C code without much trouble. See Vol. 14: Speedup for detailed examples.

Why So Many Volumes?

Most scientific text books summarize the state of the art of a field `after the dust has settled.' Students are presented with a clean path of logic that bears little resemblance to the historical process of trial and error that underlies any scientific discovery, large or small. In comparison, there is not much information available that teaches students how to make mistakes and learn from them. In contrast, our aim is to present much of the tacit knowledge that is essential for starting a research project in computational science.

Initially, we expected to be able to present our series in ten volumes. However, when we completed our first volume, Moving Stars Around, and published it on the web in October 2003, we learned two important lessons: 1) until you start making implicit knowledge explicit, you have no idea how much you know; 2) when you start this process, you learn an awful lot, adding to the store of your knowledge at roughly the same pace as you are writing it up. We now consider several tens of volumes to be a more realistic estimate, even just for the full Maya series.

Why the Name Maya?

This name seemed fitting for two reasons, one connected with Middle America and one with India. The Maya culture was very good at accurate calculations in astronomy. And the word maya in Sanskrit has the following meaning, according to the Encyclopedia Britannica: "Maya originally denoted the power of wizardry with which a god can make human beings believe in what turns out to be an illusion." Indeed, a simulation of the heavens is something virtual, an illusion of sorts, and a considerable feat of wizardry.

Why the Name Kali?

We borrowed the name from the Sanskrit kali, meaning dark, as in the kali yuga, the dark ages we are currently in according to Hindu mythology. The same word also occurs in the name Kali, for the Hindu Goddess who is depicted as black. The term dark seemed appropriate for our project of focusing on forms of tacit knowledge that have not been brought to light, so far, and perhaps cannot be presented in a bright, logical series of statements. Instead, we expect our dialogues to carry the many less formal and less bright shades of meaning, that pervade any craft.

I am an astronomy student. Is this for me?

Yes, indeed: you are our main target. In fact, we have written these on-line books with younger versions of ourselves in mind. We hope that the books and codes presented here will be useful for your own research. Beyond that, we hope that you will contribute your own additions and variations, beyond the material presented here: feel free to contact us by sending an email to "piet ATSIGN", and insofar as time permits, we'll try to answer each of you. In addition, you will be able to find announcements of summer schools and other ACS-related activities, on our "What's New?" page.

We also encourage you to form your own support groups, in which you share your experiences of working with the ACS material. You will have far more time to discuss common questions and suggestion among each other, compared to the time we can make available to you individually. And the more serious your collaborations will become, the more we will be motivated to help you implement the many great suggestions you undoubtedly will come up with.

I am an astronomer, and I already got my PhD. Is this for me?

Yes, if you have any interest in dense stellar systems. Whether you are an observer or theorist, from 2005 onward, the Kali project will give you the tools to run simulations in a friendly environment. Our presentation is designed to be self-contained, without assuming a background knowledge beyond basic astrophysics. If it turns out that you find anything lacking in this respect, please contact us by sending an email to "piet ATSIGN".

I am an amateur astronomer. Is this for me?

Absolutely! We very much hope that you will download our software, and explore the virtual heavens on your computer, just as you explore the actual heavens with your telescope. We have tried to make our presentation self-contained. In addition, we will continue to add explanations and provide more pointers to background information, as needed.

If you find that there are key points that are not yet clearly explained, or missing altogether, please feel free to contact us by sending an email to "piet ATSIGN". We may not find the time to respond and thank each of you individually, but rest assured that your comments will be greatly appreciated.

How can I help?

Since we are still in the initial phase of setting up the ACS project, most of our attention is currently focused on writing enough volumes to present a full working environment for N-body simulations. We expect to finish this initial phase some time in 2005. From then on, there will be increasingly many opportunities to join us in our attempt to produce a virtual astronomy laboratory.

Opportunities for software development will range from specialized areas in computational astrophysics and numerical methods to more general areas in graphics and user interfaces, and parallelizing codes. In addition, we will need much help in getting our environment ported to a range of different platforms and operating systems.

As our project will grow larger, and our user base will increase, we will need volunteers to answer routine inquiries, and to help beginners to get started. In addition, it would be wonderful to make translations of our material available to a wide audience fluent in other languages than English.

If you would like to make a serious contribution in any of these areas, please contact us by sending an email to "piet ATSIGN".

Back to the ACS home page.