Research Software Engineering with Python


In this course, you will move beyond programming, to learn how to construct reliable, readable, efficient research software in a collaborative environment. The emphasis is on practical techniques, tips, and technologies to effectively build and maintain complex code. This is a relatively short course (8-10 half-day modules) which is intensive and involves hands-on exercises.


  • It would be helpful to have experience in at least one programming language (for example C++, C, Fortran, Python, Ruby, Matlab or R) but this is not a requirement.

  • Experience with version control and/or the Unix shell, for instance from Software Carpentry, would also be helpful.

  • You should bring your own laptop to the course as there are several hands-on exercise for you to work through.

  • We have provided setup instructions for installing the software needed for the course on your computer.

  • Eligibility: This course is primarily aimed at Turing-connected PhD students. Other Turing-affiliated people might join too if capacity allows.


Examples and exercises for this course will be provided in Python. We will assume you have prior experience with at least one programming language but Python syntax and usage will be introduced during this course. However, this course is not intended to teach Python and you may find supplementary content useful.


None: you are not graded. There are two exercises that you can use for self-assessment.


You can browse through course notes as HTML or download them as a printable PDF via the navigation bar to the left.

If you encounter any problem or bug in these materials, please remember to add an issue to the course repo, explaining the problem and, potentially, its solution. By doing this, you will improve the instructions for future users. 🎉