Course goals

In this course, you will become familiar with tools and best practices for scientific software development. This course will not teach a programming language, but we teach the tools you need to do programming well and avoid common inefficiency traps. The tools we teach are practically a requirement for any scientist who needs to write code. The main focus is on using Git for efficiently writing and maintaining research software.


Do you identify with any of these below, then this course is for you:

  • 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.
  • You wish you could re-run your own code after a few months.
  • You wish you could reproduce your own results better.
  • You wish you could automate your work better.
  • You, or your group, can't share or reuse code.
  • You overall want to become more efficient at your work, by using the best possible tools.

This course is not designed for "professional software engineers" or to make you one. You can register with your friends/group as a team and you'll work together in exercise rooms, and you'll be able to work together after the course as well.

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 somehow familiar with the programming language that you use in your work and research. Most of the course applies to any programming language.


This is an informal and interactive event with type-along lessons, live coding, and exercises.

The workshop will be held on-site, in the Ångström laboratory, Uppsala, Sweden.


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


Privacy policy

Follow us


Improve this page

Source code