# Scientific computing

## (for the rest of us)

This material is a lot more useful when paired with additional readings. What follows is an uncurated list of things that we consulted when writing and revising it, and are both accessible and illuminating. The point is not to read all of them in one go. The point is not to provide a complete reference bibliography either. In a classroom context, a lot of these articles would be on the syllabus. In a self-learning environment, it’s useful to know where to look for things to read, and we encourage you to have a look at a few of these entries.

One interesting essay to get you motivated to read more about computational approaches is “All biology is computational biology”:

Florian Markowetz (2017). “All biology is computational biology”; PLOS Biology 15(3) e2002050 10.1371/journal.pbio.2002050

Greg Wilson et al. (2017). “Good enough practices in scientific computing”; PLOS Computational Biology 13(6) 1-20 10.1371/journal.pcbi.1005510

If you want a more in-depth treatment of best practices, there is a must-read:

Greg Wilson et al. (2014). “Best practices for scientific computing”; PLoS biology 12(1) e1001745 10.1371/journal.pbio.1001745

But when facing a lot of possible action items, knowing what is barely sufficient is immensely helpful:

Graham Lee et al. (2021). “Barely sufficient practices in scientific computing”; Patterns 2(2) 100206 10.1016/j.patter.2021.100206

These practices are important, because clean code facilitates communication among researchers:

Alessandro Filazzola & CJ Lortie (2022). “A call for clean code to effectively communicate science”; Methods in Ecology and Evolution () 10.1111/2041-210X.13961

If you want to release some code, there are articles about the type of additional checks to perform:

Timoth{'e}e Poisot (2015). “Best publishing practices to improve user confidence in scientific software”; Ideas in Ecology and Evolution 8(1) 10.4033/iee.2015.8.8.f

KAS Mislan et al. (2016). “Elevating the status of code in ecology”; Trends in ecology & evolution 31(1) 4–7 10.1016/j.tree.2015.11.006

There is also a vast amount of “ten simple rules” papers about various sides of computational science.

Not sure how to make your research more reproductible?

Geir Kjetil Sandve et al. (2013). “Ten simple rules for reproducible computational research”; PLoS computational biology 9(10) e1003285 10.1371/journal.pcbi.1003285

Want to take explore different ways to store your digital data for analysis and archival?

Edmund M Hart et al. (2016). “Ten simple rules for digital data storage”; PLoS computational biology 12(10) e1005097 10.1371/journal.pcbi.1005097

Interesting in feeding your data to make them grow?

Alyssa Goodman et al. (2014). “Ten simple rules for the care and feeding of scientific data”; PLoS computational biology 10(4) e1003542 10.1371/journal.pcbi.1003542

Ready to move into fully open software development?

Andreas Prli{'c} & James B Procter (2012). “Ten simple rules for the open development of scientific software”; PLoS Computational Biology 8(12) e1002802 10.1371/journal.pcbi.1002802

Want to make your software more robust?

Morgan Taschuk & Greg Wilson (2017). “Ten simple rules for making research software more robust”; PLoS computational biology 13(4) e1005412 10.1371/journal.pcbi.1005412

More usable, maybe?

Markus List et al. (2017). “Ten simple rules for developing usable software in computational biology”; PLoS computational biology 13(1) e1005265 10.1371/journal.pcbi.1005265

James M Osborne et al. (2014). “Ten simple rules for effective computational research”; PLoS Computational Biology 10(3) e1003506 10.1371/journal.pcbi.1003506

Some of these papers also offer good baselines about your expectation when learning programming from a non-CS background:

Maureen A Carey & Jason A Papin (2018). “Ten simple rules for biologists learning to program”; PLoS Computational Biology 14(1) e1005871 10.1371/journal.pcbi.1005871

Learning on your own? There are guidelines for this!

Jake Lawlor et al. (2022). “Ten simple rules for teaching yourself R”; PLOS Computational Biology 18(9) 1-9 10.1371/journal.pcbi.1010372

Looking to assemble a group of friends to build a community? You guessed it, guidelines!

Sarah LR Stevens et al. (2018). “Building a local community of practice in scientific programming for life scientists”; PLoS Biology 16(11) e2005561 10.1371/journal.pbio.2005561

More into books? “The pragmatic programmer” is a masterpiece. I have also heard great things about “Clean code”. The online book “How to think like a computer scientist” is based on Julia, and very thorough. Finally, “Hands-on design patterns and best practices with Julia” is a wonderfully accessible book that will make you a better programmer, even if Julia is not your main language.