Computational Modelling Group

Seminar  5th October 2017 6 p.m.  07/3023

Sustainable Scientific Software Development

Alice Harpole
University of Southampton

Categories
C, C++, Cloud computing, Computational Social Science, Continuous Integration, Data Science, Design, Docker, e-Research, Git, Linux, Mac OS X, Mercurial, NGCM, Python, Scientific Computing, Software Engineering, Windows
Submitter
Thomas Kluyver

In the experimental sciences, new theories are developed by applying the scientific method to produce results which are accurate, reproducible and reliable. This involves testing the experimental setup to show that it is working as designed and thoroughly documenting the progress of the experiment. Results will not be trusted unless the experiment has been carried out to a suitable standard.

In computational science, we should aim to apply the same principles. Results should only be trusted if the code that has produced it has undergone rigorous testing which demonstrates that it is working as intended, and any limitations of the code (e.g. numerical errors) are understood and quantified. The code should be well documented so that others can understand how it works and run it themselves to replicate results.

Unfortunately, this can be quite challenging. By their very nature, scientific codes are built to investigate systems where the behaviour is to some extent unknown, so testing them can be quite difficult. They can be very complex, built over a number of years (or even decades!) with contributions from many people. However, even for the most complicated of codes there are a number of different tools we can use to build robust, reliable code.

In this talk, I shall look at techniques and tools you can use to build more sustainable scientific code, including testing, continuous integration and documentation.