Journal article 889 views 170 downloads
A tool for publishing reproducible algorithms & A reproducible, elegant algorithm for sequential experiments
Science of Computer Programming, Volume: 156, Pages: 45 - 67
Swansea University Author: Harold Thimbleby
PDF | Accepted Manuscript
Released under the terms of a Creative Commons Attribution Non-Commercial No Derivatives License (CC-BY-NC-ND).Download (2.84MB)
Tools to ease the burden of reproducibility are important so computer science does not fall into the trap of "cargo cult" science: particularly publishing discussions of algorithms that look like algorithms but which do not work properly when they are copied from the paper. This paper intr...
|Published in:||Science of Computer Programming|
Check full text
No Tags, Be the first to tag this record!
Tools to ease the burden of reproducibility are important so computer science does not fall into the trap of "cargo cult" science: particularly publishing discussions of algorithms that look like algorithms but which do not work properly when they are copied from the paper. This paper introduces a tool, called relit, which makes it very easy to write about and publish correct algorithms, yet without restricting the author's style. In fact, relit can be used with any material: mathematics, proofs, algorithms or programs. It can be used in papers, in reports and books and, with analogous advantages, in student work - where examiners may wish to automatically check what the student claims to have written is actually correct.To demonstrate relit, this paper presents a new, elegant algorithm for the design of sequential experiments to efficiently control bias, drift, random error, carry-over and other effects. The algorithm is written in C, in a clear style to simplify porting to other languages. We developed relit because it was impossible to find simple reproducible code for this problem, and we wanted to do better. Thanks to relit, the published algorithm is reproducible and works exactly as published in the present paper. This paper also includes discussion of the problems and opportunities of reproducibility and the essential contributions of relit-style approaches to improving the reliability of computer science publications.
Originality: A new and very elegant algorithm for finding Euler cycles is developed, combined with a new approach to literate programming.Significance: The Euler cycle algorithm is rarely published in full; this paper is unique in providing full source code as part of the paper using a new type of literate programming.Rigour: The paper uses and reviews reproducible techniques, and develops a new general approach for journal articles which is demonstrated by being used to reliably publish the new algorithm.
Reproducibility; Publishing algorithms; Literate programming; Euler cycle algorithm; de Bruijn sequence; Combinatorics; Experimental design.