Course introduction


Figure 1

JSON data file snippet showing EVA/spacewalk data including EVA ID, country, crew members, vehicle type, date of the spacewalk, duration, and purpose
JSON data file snippet showing EVA/spacewalk data including EVA ID, country, crew members, vehicle type, date of the spacewalk, duration, and purpose

Figure 2

The first few lines of a Python script used as example code for the episode
The first few lines of a Python script

Better start with a software project


Figure 1

Software development lifecycle with Git diagram showing Git commands and flow of data between components of a Git system, including working directory, staging area, local and remote repository
Software development lifecycle with Git

Figure 2

Screenshot of VS Code with the SOURCE CONTROL interface open in the left hand pane of the window. The interface shows one modified file staged for commit, an empty text input box where a commit meesage can be entered, and a green button labeled 'Commit & Push'
The Source Control interface to Git in VS Code

Figure 3

Two developers can use Git in combination with a remote repository, usually accessed via the internet. By pushing and pulling changes to and from the remote repository, they are each able to synchronise their local copy of the project with the changes the other developer has committed.
Git - distributed version control system, image from W3Docs (freely available)

Figure 4

Selecting the 'New repository' option from GitHub's dropdown menu labelled '+'
Creating a new GitHub repository

Figure 5

Setting the name of the repository on GitHub through the 'Repository Name' text field
Naming the GitHub repository

Figure 6

Completing the creation of the GitHub repository by clicking on the 'Create repository' button
Complete GitHub repository creation

Figure 7

Copying the commands to sync the local and remote repositories from the remote repository's home page on GitHub
Copy the commands to sync the local and remote repositories

Reproducible software environments


Figure 1

A single system might contain multiple virtual environments, each containing a different version of Python and the set of third-party libraries it needs (dependencies) e.g. NumPy, Pandas or Matplotlib. Each environment contains its own complete copy of the required version of each dependency.
Diagram to depict different Python environments containing different packages on the same machine

Code readability


Code structure


Code correctness


Software documentation


Open software management & collaboration


Figure 1

styled button linking to the Zenodo entry for this lesson

Wrap-up


Figure 1

Chinese proverb 'The best time to plant a tree was 20 years ago. The second best time is now'
Image by CCNULL, used under a CC-BY 2.0 licence

Figure 2

Three 'help your team' principles: write FAIR, secure and maintainable code
Helping your team, image from RSECon2024, used under CC BY 4.0

Figure 3

Three 'help your peers' principles: make your work reproducible, inclusive and credit everyone involved in it
Helping your peers, image from RSECon2024, used under CC BY 4.0

Figure 4

Three 'help the world principles': when developing research software be responsible, open and global, and humanist
Helping the world, image from RSECon2024, used under CC BY 4.0