Best practices for research software development

Two-week course on collaborative tools to develop reproducible software

November 25 - December 6, 2019, Université de Lille

This is a two-week course co-organized by CodeRefinery and Université de Lille, funded by the Department of Physics, Faculty of Sciences, Université de Lille.

The event is open for all but since the number of seats is limited, priority will be given to participants affiliated with the University of Lille.


Université de Lille, Department of Physics, Room 124, Building P5.

For those without access (it’s a building with controlled access), have a look at this map and come to the “Accueil P5” and ring the intercom.


Hands-on informal and interactive event with type-along type of presentations, live coding and demos. Short tutorials alternate with practical exercises.

Course goals

The aim of this course is to demonstrate to and familiarize the workshop participants with best practices and tools in modern research software development. The main focus is on professional tools for efficiently developing and maintaining research software. Since most research code is developed in a collaborative setting, we will discuss tools and workflows which facilitate this process. Most of the content is also relevant to a single developer.

Who the course is for

Are you doing any of these things below:

  • You write scripts to process data.
  • You change scripts written by your colleagues.
  • You write code that is used in research by you or others.

If yes, then this course is for you. Most participants are not “professional code developers” or computer scientists.

If you develop research code and you know all the tools already, join us as a helper! It’s fun, and you always learn something new about a subject by teaching it.

What we will not teach

This is not a course about a specific programming language or the Linux/Unix terminal shell. We assume that you are familiar with the programming language that you use in your work and research. We try to keep the course as language-independent as possible but we will show some basic code examples in Python.


  • You should be able to navigate the file tree in a terminal session and edit text files in the terminal.
  • Basics in at least one programming language.
  • You will need to bring a laptop.
  • It is good if you have access to Eduroam.
  • You need to install some software (see below).
  • It is useful if you have a basic idea of how Git works. We will start from the basics, but please go through this Git-refresher material for a basic overview and important configuration steps.

Software requirements

Please follow our installation instructions. We will only need the tools listed under “Tools we use in a typical CodeRefinery workshop”.

On Monday and Tuesday you will need:

  • Bash (or a different terminal shell of your preference)
  • Git
  • GitHub account
  • A terminal editor (if you are unsure which one to install, you can start with Nano)
  • (Optional) A visual diff tool

We will not need Python before Wednesday so we can also troubleshoot installations together.


It is possible to participate for only one week or both weeks.

Week 1

Week 2


  • Radovan Bast


  • Radovan Bast (contact:
  • André Severo Pereira Gomes, Laboratoire de Physique des Lasers, Atomes et Molécules (PhLAM), CNRS / Université de Lille


CodeRefinery is a project within the Nordic e-Infrastructure Collaboration (NeIC). NeIC is an organisational unit under NordForsk.


Privacy policy

Follow us

CodeRefinery GitHub account CodeRefinery Twitter account