Intermediate Software Development

20 May 2024
24 May 2024
GBP 50
University of Bradford
Richmond Rd
Bradford
UK
BD7 1DP

What will you learn?

This course aims to teach a core set of established, intermediate-level software development skills and best practices for working as part of a team in a research environment using Python as an example programming language. The core set of skills we teach is not a comprehensive set of all-encompassing skills but a selective set of tried-and-tested collaborative development skills that form a firm foundation for continuing your learning journey.

Learning objectives:

  • 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 code testing.
  • Design robust, extensible software through the application of suitable programming paradigms and design techniques.
  • Understand the code review process and employ it to improve the quality of code.
  • Prepare and release software for reuse by others.
  • Manage software improvement from feedback through agile techniques.

Who is this for?

A typical learner for this course may be someone who is working in a research environment, needs to write some code, and 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 researchers and other stakeholders (e.g. users), for example:

  • Software is becoming more complex, and more collaborative development effort is needed to keep the software running.
  • Software is going further than just the small group developing and/or using the code – there are more users and an increasing need to add new features.
  • ‘Technical debt’ is increasing with demands to add new functionality while ensuring previous development efforts remain functional and maintainable.

They now need intermediate software engineering skills to help them design more robust software code that goes beyond a few thrown-together proof-of-concept scripts, taking into consideration the lifecycle of software, writing software for stakeholders, team ethic and applying a process to understanding, designing, building, releasing, and maintaining software.

Course prerequisites 

This course will help you develop your software engineering techniques and learn how to collaborate with others to develop and/or prepare software for others to use. 

This course is not accessible to beginners.

  • You must have experience writing software beyond scripting in a single file to automate a sequence of actions. If you have recently started learning programming, we would expect you to have completed a relevant introductory training course at least 6 months ago. 
  • You must be comfortable with basic Python programming (it doesn’t need to be your main language)
  • You must know version control using Git and using a command line interface.

This workshop aims to cover a significant proportion of the material from a Carpentries Incubator course. A more detailed programme will be provided closer to the event.

Pre-event meeting

Once registered, an online pre-event meeting at 14:00 (GMT) on 8 May 2024 with the trainers will walk you through the technical prerequisites for the course. All registrants are encouraged to join this meeting to ensure their systems meet the minimum requirements.

Instructions for joining the meeting will be circulated to all attendees upon successful completion of registration.

Questions and contact

Should you have any questions, please contact [email protected]


This course is partly funded as part of the UKRI Innovation Scholars. Data Science Training in Health and Bioscience call (DaSH). (MR/V038966/1)