Ubuntu Linux.
Ubuntu is a popular "flavor" of Linux. Two particularly
useful features are that it is easy to install (requiring only one CD,
not a DVD), and that it is easy to load with a variety of useful
software. UNIX-like operating systems (such as Linux) are used
for almost all scientific computing because they allow much greater
control of the computer, making possible more efficient computing.
Code::Blocks.
Students are likely to be accustomed to using an Integrated
Development Environment (IDE), such as Microsoft Visual StudioŽ,
to write, compile, and debug programs. Code::Blocks is a
free IDE for C++ that works on Linux, Mac, and Windows.
ArgoUML.
The Unified Modeling Language (UML) can be thought of as a more
powerful, more general successor to the familiar flowcharts. UML
is very useful in determining the requirements for software, designing
it, documenting it, and managing the evolution of software. UML
diagrams may not be necessary for "short" programs of under 2000 lines
written by a single designer, but they become important when programs
become long or more than one designer is involved. ArgoUML is one
of several tools that are available to create UML diagrams.
GNU Scientific Library.
Scientific computing tends to inherently involve a small subset
of basic mathematical operations, such as generating random numbers,
evaluating special functions, diagonalizing matrices, etc. The
GNU Scientific Library is a free, high-quality collection of software
functions that solves several problems.
The use of a
library assists in the process of abstraction; the high-level
programmer does not have to get bogged down in the details of routine,
if complicated, operations.
Frequently much of the execution
speed of a scientific program is limited primarily by these
mathematical functions, which means it is very important to use
efficient algorithms. These algorithms are often obscure; their
development and testing is an important branch of applied mathematics
in its own right.
Not only are the algorithms obscure,
they may also be both long and complicated, which would increase the
likelihood of introducing new errors if they had to be coded by the
high-level programmer.
Finally, the use of a standard
library helps in the documentation of the software, and makes it easier
for other scientists to reproduce the same results.
Apache Subversion. To quote the free online book, "Subversion is a centralized system for sharing information." Subversion can be accessed through Code::Blocks.
A Subversion server has already been set up for use by the REU
participants. The most important uses of version-control software
like Subversion are
to save earlier versions of software and
to facilitate the orderly updating of software that has more than one author.
Sage.
Sage is a Python-based package which is meant "to be a viabel
free open source alternative to Magma, Maple, Mathematica, and Matlab."
Sage uses components of pre-existing open-source packages, including
ATLAS, Flint, GAP, R, and Maxima, and the GNU Scientific Library.
POV-Ray.
"The Persistence of Vision Raytracer is a high-quality, totally
free tool for creating stunning, three-dimensional graphics." POV-Ray
can be used to create quality snapshots and even movies for Monte Carlo
or molecular dynamics simulations.
LyX.
LaTeX is a typesetting system that is used by a number of
academic journals because it is especially good at handling
mathematics. However, working directly with LaTeX has many of the
same difficulties as working with HTML: it is very difficult,
particularly without a lot of experience, to understand how the final
result should look based only on the source code. LyX is a "What
You Mean Is What You Get" editor that can import from and export to
LaTeX.
Bootable Cluster CD.
Frequently scientific computing requires parallel computing.
Participants in the REU will have access to Marshall University's
cluster computer for the summer, but the BCCD is a teaching tool that
can be used to simulate a cluster environment, either on a single
desktop computer or (better) on several acting together.
Tutorials and Introductions
Many of the software resources listed above contain their own documentation and tutorials.