9.   Scientific Computing

This chapter under major construction.

Many of the most important and challenging problems in science and engineering require significant computing resources to model and simulate natural phenomenon. Some example problems include: the human genome project, computational fluid dynamics, ocean circulation, plasma dynamics, vehicle crash simulation, architecture walk-through, global climate simulation, financial modeling, seismic surveys, molecular dynamics simulations, protein folding, electronic design, nuclear weapons simulation, pharmaceutical design, and natural language processing. These grand challenge problems have the potential for broad scientific, social, economic, and political impact.

Efficient computer algorithms also play central roles in modern technology and enrich our daily lives. Examples include web page search engines, DVD players, cell phones, JPEG images, MP3 audio files, and DivX video files.

Scientific computing embodies a vast field of knowledge, built up over the past half century on top of work by Gauss, Newton, Euler, and others. In this chapter, we will survey some of the most important algorithms that play crucial roles in our computational infrastructure. Designing robust and efficient scientific algorithms is a highly nontrivial task. Our goal is to provide a flavor for what is involved and ensure that you are aware of the consequences of the decisions you make when writing scientific codes. Not intended to be a comprehensive reference (see Numerical Recipes in Java, Matrix Computations by Golub and Van Loan). Nor do we include mathematical proofs to justify our algorithms.

An Introduction to Computer Simulation Methods by Gould, Tobochnik, and Christian.

Numerical Recipes.

Colt provides a set of Open Source Libraries for High Performance Scientific and Technical Computing in Java. Brought to you by CERN. Up to 90% as fast as optimized Fortran. It contains efficient data structures and algorithms for Off-line and On-line Data Analysis, Linear Algebra, Multi-dimensional arrays, Statistics, Histogramming, Monte Carlo Simulation, Parallel & Concurrent Programming.