About the workshop#
This practical workshop is designed for people who teach researchers and postgraduate students to write Python code for research, particularly those who develop their own training materials and workshops. As research increasingly depends on software, there is growing recognition that researchers benefit not only from learning how to write code that works, but also from learning practices that make code easier to understand, maintain, reproduce, reuse, and extend over time.
The workshop supports trainers in incorporating approachable software engineering concepts into their existing teaching in ways that are practical, lightweight, and relevant to research contexts. Participants will explore topics such as code quality, maintainability, refactoring, software design principles, and the responsible use of AI coding assistants through hands-on examples and teaching-focused discussions. No formal software engineering background is required.
Note: Participants should already have Python code bases that can be improved, or Python training materials. This workshop is not an introductory Python course.
Background and rationale#
Research across disciplines increasingly depends on software to collect, process, analyse, model, simulate, visualise, and interpret data. In many research environments, code evolves incrementally under significant time and publication pressures, often leaving limited opportunity to improve structure, testing, documentation, or long-term maintainability.
As research becomes more collaborative, data-intensive, computationally complex, and increasingly AI-assisted, software quality directly impacts research effectiveness, reproducibility, sustainability, and reuse. Research code is also often expected to remain usable long after the original developers have moved on, making maintainability critical for continuity, collaboration, and long-term research value.
This workshop focuses on Python because it has become one of the most widely used programming languages in research and underpins a large proportion of modern scientific computing, data analysis, machine learning, and AI-enabled research workflows.
What participants will leave with#
- Practical strategies for improving existing Python codebases and training materials
- Experience using maintainability metrics and static analysis tools
- Refactoring approaches that can be applied to active research software projects
- Greater confidence evaluating and using AI-assisted coding suggestions responsibly
- Approaches for incorporating maintainability and software quality concepts into research programming training
- A clearer understanding of how software structure affects reproducibility, collaboration, reuse, and long-term sustainability
Learning objectives#
By the end of the workshop, participants will be able to:
- Identify common code quality and maintainability issues in a codebase and explain why they matter for reproducibility, reuse, and long-term sustainability
- Apply selected Better Research Software practice recommendations from The Carpentries to improve the readability, organisation, and maintainability of research code
- Explain what software maintainability means within internationally recognised software quality standards and describe characteristics that make software easier to understand, reuse, modify, test, and maintain
- Explain how the SOLID principles can help make research software easier to understand, extend, and maintain, and identify opportunities for improvement in existing code
- Use software analysis tools and common quality measures to assess how maintainable a codebase is
- Use AI coding assistants to support code improvement and refactoring while preserving existing functionality
- Compare code quality before and after refactoring to evaluate improvements and identify where AI-assisted suggestions still require human review
Agenda#
The workshop combines short conceptual sessions with hands-on coding exercises, collaborative discussion, guided refactoring activities, and opportunities to apply concepts directly to participant code and training materials.
Day 1#
Improving research code using selected Better Research Software practices through guided, hands-on examples and collaborative exercises.
Day 2#
Introducing maintainability concepts, software quality metrics, and the SOLID principles. Participants will use static analysis tools to establish a maintainability baseline, refactor code to improve structure and reduce maintainability issues, and reassess metrics to evaluate improvements using AI-assisted workflows.
Optional: Training Materials Clinic (Day 3)#
The optional one-day training materials clinic is designed specifically for trainers and educators who want dedicated time and support to incorporate maintainability, testing, refactoring, and responsible AI-assisted coding practices into their own courses, workshops, notebooks, and teaching materials.
The clinic will function as a collaborative coworking and feedback space where participants can adapt existing materials, discuss teaching approaches, and receive practical support from peers and facilitators.
Target audience#
We invite researchers, trainers, and technical staff who are responsible for developing, understanding, modifying, maintaining, or teaching Python code used in research workflows and/or offer Python training to researchers and postgraduate students. This may include:
- PhD students and postdoctoral researchers
- Research assistants, associates, and fellows
- Academic faculty
- Research software developers and engineers
- Technical staff embedded within research groups
- Trainers and educators teaching research programming or computational methods
The workshop is best suited to individuals or teams that have an existing Python codebase or set of training materials, anticipate ongoing development or reuse of that work, and want to improve software maintainability, structure, testing, and sustainability.
Logistics#
| Main venue | University of the Western Cape |
| Clinic venue | University of the Western Cape and University of Cape Town |
| Format | In-person |
| Duration | Two-day workshop + optional one-day training materials clinic |
| Dates | July 2026 (exact dates to be announced) |
| Cost | Free |
The workshop organisers do not have resources to support participant travel or accommodation costs. Participants are responsible for arranging and funding their own travel and accommodation where required.
What to bring#
- A laptop capable of running a local Python environment
- Access to GitHub or GitLab
- Existing Python code or training materials (if you would like to use them during exercises and discussions)
Organisers and partners#
The workshop will be led by Prof. Colin C. Venters (University of Limerick and CERN) and Prof. Birgit Penzenstadler (Chalmers University of Technology and University of Gothenburg), with support from Peter van Heusden (University of the Western Cape) and Anelda van der Walt (University of Cape Town).
The workshop is co-organised by the South African National Bioinformatics Institute at the University of the Western Cape, the UCT eResearch Centre, and RSSE Africa, with funding support through the Erasmus+ programme.
Registration#
Registration details will be announced soon. Follow us on LinkedIn to be notified when registration opens.
