Scientific Software Engineering in a Nutshell

Helmut G. Katzgraber
DOI: https://doi.org/10.48550/arXiv.0905.1628
2010-06-16
Abstract:Writing complex computer programs to study scientific problems requires careful planning and an in-depth knowledge of programming languages and tools. In this chapter the importance of using the right tool for the right problem is emphasized. Common tools to organize computer programs, as well as to debug and improve them are discussed, followed by simple data reduction strategies and visualization tools. Furthermore, some useful scientific libraries such as boost, GSL, LEDA and numerical recipes are outlined.
Computational Physics
What problem does this paper attempt to address?
The problem that this paper attempts to solve is how to effectively plan and develop complex computer programs when using computers to study scientific problems. Specifically, the paper emphasizes the importance of choosing appropriate tools and programming languages, discusses common tools for organizing, debugging, and optimizing computer programs, introduces simple data reduction strategies and visualization tools, and outlines some useful scientific libraries such as boost, GSL, LEDA, and Numerical Recipes. The goals of the paper are two - fold: first, to convey the tools and "organizational skills" required for developing (small - scale) computer programs for scientific research; second, to emphasize the importance of using the right language to solve the right problem. For example, if Mathematica or Matlab can perform the numerical integration of a function in one line of code, there is no need to write a program in C or FORTRAN to achieve this function. Through these methods, the paper aims to improve the efficiency and code quality of scientific researchers in the software development process.