Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/transientlunatic/notes-software

Notes on software engineering principles for the natural sciences
https://github.com/transientlunatic/notes-software

containers docker htcondor lecture-notes notes python python-package scientific-computing singularity software-development software-engineering testing tutorial unit-testing version-control versioning

Last synced: 14 days ago
JSON representation

Notes on software engineering principles for the natural sciences

Awesome Lists containing this project

README

        

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.