Research Software Engineering with Python#

Introduction#

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.

Pre-requisites#

  • It would be extremely 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 strict requirement.

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

  • You should bring your own computer 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#

The course is open to postgraduate students, early career researchers, practitioners (e.g. data analysts/scientists) and researchers interested in to learn how to construct reliable, readable, efficient research software in a collaborative environment. Turing PhD students and researchers are particularly encouraged to apply. Attendance is free.

Instructors#

Exercises#

Examples and exercises for this course will be provided in Python. Python syntax and usage will be introduced during this course but please be aware that this course is not intended to teach Python.

Solutions#

Note: you are not graded.

Sample solutions to the exercises are available here.

Versions#

You can browse through course notes as HTML, download them as a printable PDF via the navigation bar to the left, or clone the repo and run the notebooks (see the setup instructions).

Support and Contributing#

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. :tada:

We also welcome suggestions and contributions for adding to or improving the material.