Software Carpentry

Southampton RSG

0. Introduction

Before We Start

  • Make sure you have an account at github.com
  • Go to, or make, a climate-analysis repo
  • Open VS Code or a text editor
  • e.g. Atom, Sublime Text, Notepad++, BBEdit

1. What Is Academic Software?

The Large

  • Database creation & management
  • HPC simulation codes
  • Machine learning pipelines
  • OSes & drivers

The Small

  • Collections of scripts
  • Cleaning data
  • Plotting figures
  • Toy models

The Commonalities

  • May not be true for Engineering/CompSci!
  • Instrumental- not a goal in itself
  • Experimental- may not have a clear spec
  • Small teams

The Issues

  • Paperware
  • Unplanned
  • Undocumented
  • Unmaintainable
  • Can’t onboard people
  • Disposable

Serious Problems

  • Software Is Science
  • Reproducibility
  • Wasted effort
  • Harms collaboration

2. How Do We Avoid This

Forward-thinking

  • Assume people will try to understand
  • Assume people will try to reproduce
  • Make it as easy as possible

Understanding

  • Write clear code
  • Document your code
  • Document your development process
  • Document your code’s limitations

Reproducibility

  • Track versions of your code
  • Specify versions used in your papers
  • Cite your code