Learning Objectives
By the end of the school, participants will be able to:
-
Recognize the key aspects of software quality — maintainability, reproducibility, performance, and security — and understand their significance in scientific research.
Describe and apply best practices across the different phases of a software development lifecycle. -
Set up a professional development environment using modern tools such as an IDE, virtual environments, Git, and effective version control workflows.
-
Develop sustainable Python research software by implementing unit tests, continuous integration (CI), and static code analysis tools.
-
Apply the FAIR principles (Findable, Accessible, Interoperable, Reusable) to research software development and dissemination.
-
Package, document, and publish research software following open-source standards, including Python packaging, containerization (Docker/Singularity), metadata publication, and best practices for sharing code.
Programme Highlights
-
Introduction to FAIR principles for research software
-
Software development and maintenance: IDEs, virtual coding environments, Version control with Git, Unit testing, continuous integration (CI), Introduction to AI coding assistants
-
Software Quality: Tools and techniques to assess, measure, and improve code quality
-
Performance Optimization: Profiling and code optimization strategies
-
Documentation: Best practices for creating effective, user-friendly documentation
-
Publication and Dissemination: Software packaging and distribution, Containerization, Applying metadata standards for research software, Preparing for code sharing and open publication.