Incubator Lesson Spotlight: Intermediate Research Software Development in Python

Get involved with a community lesson teaching intermediate research software development

The Incubator Lesson Spotlight highlights a lesson under development by our community in The Carpentries Incubator. In this edition, we look at the progress being made on the “Intermediate Research Software Development in Python” lesson, and hear from the authors about how The Carpentries community can get involved with the ongoing development of this lesson.

Lesson Profile

  • Title: “Intermediate Research Software Development in Python”
  • Lesson Pages: https://carpentries-incubator.github.io/python-intermediate-development/
  • Lesson Repository: https://github.com/carpentries-incubator/python-intermediate-development

Learning Objectives

After this course, learners should be able to:

  • Set up and use a suitable development environment together with popular source code management infrastructure to develop software collaboratively
  • Use a test framework to automate the verification of correct behaviour of code, and employ parameterisation and continuous integration to scale and further automate your testing
  • Design robust, extensible software through the application of suitable programming paradigms and design techniques
  • Use a critical, reflective mindset to prepare and release your software for reuse by others
  • Manage software improvement from feedback through agile techniques

Target Audience

A typical learner is someone who is working in academic research and, needing to write some code, has gained basic software development skills either by self-learning or attending, e.g., a novice Software Carpentry Python course. They have been applying those skills in their domain of work by writing code for some time, e.g. half a year or more. However, their software development-related projects are now becoming larger and are involving more stakeholders, and they now need more intermediate software engineering skills to help them design more robust software code, automate the process of testing and verifying its correctness and support collaborations with others.

Lesson Progress

All the lessons have been completely written and piloted in 5 workshops, including one time in an industrial setting. We are currently working on finalising instructor notes. It is ready for reuse by the community and, while the course be delivered in a code-along setting, we have found it works best as a self-learning course for learners with previous programming experience, with helpers in attendance to aid learners where necessary.

How You Can Help Develop This Lesson

We would like the community to start teaching the lesson and provide feedback, provide extension points for the course either as additional materials/extras or as separate courses. We would like the lesson to be ‘translated’ to R language too (currently it is in Python). If you are interested in contributing to the lesson, please file an Issue on the GitHub repository.


About This Series

Incubator Lesson Spotlight is a regular feature in The Carpentries blog and Carpentries Clippings newsletter, highlighting the great work our community is doing to develop new lessons in The Carpentries Incubator. Developers of any lesson in the Incubator are encouraged to submit details about their material for inclusion in the series. If you would like to increase the visibility of your lesson and encourage Carpentries community members to contribute to its ongoing development, fill in this short form.

Dialogue & Discussion

Comments must follow our Code of Conduct.

Edit this page on Github