Skip to content

transientlunatic/notes-software

Repository files navigation

Software Engineering for Scientists

As scientists we spend most of our time thinking and learning about how various parts of the universe--be they atoms, molecules, or even galaxies--work. For most of us that also means that we need to turn to computer programming and writing software to help analyse data and perform research. Most of us, however, don't spend much time thinking about what the best way to do this is, and while many undergraduate science courses teach the fundamentals of programming in a language like C, python, or R, very few have the scope to cover good practices once you start writing lots of code.

They assume you have some knowledge of a programming language; most of the concepts discussed will work for any language, but most of the examples will use Python. This means that you'll need to figure out the best way to do some things in your own language, but hopefully I'll have provided the scaffolding for that learning.

No part of these notes is specifically intended to be more important than any other, but if you're very pressed for time I strongly recommend reading the chapter on version control, which is something it's helpful to understand before you start working on even the simplest scripts.