Who needs scientific computing? The answer starts with you and ends with everyone. Put more aptly: who doesn't need scientific computing? We're hard-pressed to find an answer. Anyone doing quantitative research can benefit from the tools and concepts of contemporary scientific computing, from professional scientists, to humanists employing statistical methods, to hobbyists systematically exploring data.
But what is scientific computing? Conventionally, scientific computing is simply the use of computers for the practice of science. We elaborate that scientific computing is not the use of computers as an afterthought to research, but rather their intelligent and intentional use to organize and process data, and communicate the results of empirical and simulated work. Computers are unique tools for research and analysis; scientific computing exploits their particular advantages to increase our understanding of the world around us.
However, as computational scientists ourselves, we have witnessed firsthand the difficulty of effective scientific computing. The use and development of computational tools is de-emphasized within academia, and there are few roadmaps for good computational science praxis. Often, scientific computing is practiced as mere science on computers: research projects are poorly organized, code is messy and obtuse, data is obtained and transformed but never documented. We have received code pasted into Excel spreadsheets, seen case-statements hundreds of items long and struggled to reproduce others' results. These problems are the norm, and in research environments, there is little impetus towards improvement.
We hope to provide a template for scientific computing that remedies these deficiencies. We hope to make scientific computing the rule and science on computers the exception. We believe that science should be well-documented, reproducible and highly organized, and our suggestions below seek to make this model of science as effortless as possible.
We believe that scientific computing need not be something Professional Researches pawn off to their RAs as "dirty work," nor even be complicated or difficult. We believe scientific computing can be fun and powerful and provide innovative solutions to problems. When used properly, computers can do things no human can do, but it is only by spending time and energy developing computational tools, skills and understanding that computers can be used to their full potential.
We put forth here a blueprint for conducting scientific research in a computational context. Our individual workflows differ, as do the tools we use. These should differ for you, too, tailored to your preferences, field and abilities. We understand our project as presenting high-level heuristics and organizational techniques that we have found greatly increase our scientific output, and might help you, too.
This is a guide to Scientific Computing for Scientists, and it is a work in progress. Please contact us with any omissions, mistakes or comments: