Best practices in scientific software development

I found the analogies between C++ and Fortran especially interesting. Geert Jan Bex co-authored a Fortran MOOC and the funny video where Fortran devours a Python. A Fortran-specific version of this material could be created. For example, Jan Bex recommends CMake for builds, but a Fortran course would highlight FPM.


Material [by Geert Jan Bex] for a training on best practices for programming and software development.

Programming languages

Although this training aims to be programming language-agnostic, the repository also list a number of tools that are programming language-specific. Obviously, this can not be exhaustive, so feel free to suggest additional tools if you are aware of any.

Programming languages covered:

  • C
  • C++
  • Fortran
  • Python
  • R

Table of contents

  1. Syntax versus semantics
  2. Code style and conventions
  3. Version control & collaboration
  4. Code documentation
  5. Testing
  1. Deployment
  2. Continuous integration
  3. References
8 Likes

There is an ongoing initiative in this direction centered around Fortran here: Course Curriculum Outline · carpentries-incubator/intro-to-modern-fortran · Discussion #6 · GitHub

The program you outlined is of course way more general! they are quite complementary I think :slight_smile:

2 Likes

Let’s invite Geert Jan Bex with @gjbex to join the thread.

To put this into context: I was asked to provide a 3-hour best practices training that would be high-level and programming language-agnostic. That training is tomorrow, and I created this website to allow the participants to revisit the topics later.

Many software engineering concerns are indeed not specific to a particular programming language, but tools and many aspects of code style are.

Some of the material was taken from an MOOC on defensive programming and debugging that I produced a couple of years ago and that unfortunately is no longer online. Other material ties in with many of the programming language-specific training sessions I do.

My intention for now is to add to this repository/website when I come across interesting tools or material. We’ll see where it goes.

8 Likes

I guess it is the one ([once] equally) on futurelearn here with a companion page still accessible here.

1 Like

Three resources I’m aware of which seem to resonate with this thread are