SWD3: Software development practices for Research

SWD3: Software development practices for Research#

Booking for this course is through the IT Training Unit. Click here to book

Workshop content#

The purpose of this workshop is to introduce a number of the techniques and concepts that professional software developers use to manage their code, projects and teams. Although the development of research codes and software has different needs and challenges to the development of commercial software, there are nonetheless some tools and techniques that we can adopt or adopt to improve our Research Software Engineering. This isn’t a programming workshop, so it will be relevant to you whichever programming language (on Windows, Linux or Mac) or infrastructure (HPC, Cloud, Desktop) you use. This will be a hands-on session with lots of discussion and small group activities. We’ll be joined by a number of people who develop codes and software who will share their experiences.

At the end of the workshop, attendees will be able to:

  • Understand the basics stages of Software Development Life Cycle

  • How to layout a project

  • How to using tools to optimise the work

  • How to integrate the work with GitHub

  • How to build a testing unit

  • How to build a code documentation?

Delivering Plan#

  • Software Development Life Cycle introduction using quarto slides

  • Install Requirements (maybe ask this before)

  • Start project and present all content available in this course in a practical example.

TODO#

  • Setup: Install git

  • Setup: Configure git

  • Setup: Connect with GitHub

  • Setup: Install Anaconda

  • Setup: Add install VScode instructions

  • vsc: add extensions intro

  • vsc: add vsc market link

  • vsc: add link for the suggested extensions

  • Lint: Add introduction

  • Lint: Add PEP8 reference

  • Lint: Add Flake8 example

  • Lint: Add Black example

  • GitHub Actions: Setup python application action

  • Create a repository to present a solution for the Case of Study

  • Documentation: add some docstring and sphinx example?

  • Deployment: add some Release information?

  • Quarto slides for Software Development Life Cycle Introduction

Major Problem#

  • Language - how we are going to address other languages?

Material Summary#

Reference#

The content in this material is a summary of several tools/techniques tailored to fit an one day course.

If you want to learn in more detail some of the content presented here, please give a look in the following material: