Skip to main content Link Search Menu Expand Document (external link)

Which course is right for me?

If your role is computing-related, you should feel free to attend any of the Software Carpentry courses. However, you can use the information below to help you decide which courses are relevant or of interest.

Courses

The Unix Shell

The Unix shell is a user interface for Unix-like operating systems. It allows a user to enter commands, and combine them in simple ways to automate tasks.

As an example, knowledge of the Unix shell can significantly improve the use of, or be essential for, the following technologies:

  • Linux-based operating systems
  • Docker & Kubernetes
  • Git (even on Windows, a typical way to use Git is via Git Bash)
  • Interaction with high-performance computing systems; for example, job submission or storage requests

Version Control with Git

Git is a version control system that allows tracking of changes made to a repository of files. Git’s primary use is for collaborative source code development, where it enables many developers to work on a project in parallel, whilst producing a main and consistent version of the project’s files.

Git can be useful if you…

  • …are working collaboratively on a set of files (such as those that comprise this website!)
  • …want to integrate with other tools such as GitHub; for example you might want to produce tagged releases of your software

Programming in Python

Python is a programming language that is ubiquitous in modern computing, and the same is true at STFC, where it is used in a broad range of applications. Knowledge of some basic Python and commonly-used libraries is useful for

  • processing, analysing and visualising data
  • machine learning
  • automation of routine tasks

This course is aimed at novices in both scientific programming and Python. If you’re confident programming in a language other than Python, you may prefer to self-study at your own pace, as many of the concepts will already be familiar to you.

Intermediate Research Software Development in Python

This course teaches important skills for successful research software development, using Python. It covers

  • more intermediate software engineering techniques and tools, such as testing and integrated development environments
  • how to collaborate with others to develop software
  • how to prepare software for others to use

The material for this course is more complex than for those listed above; therefore, you should be comfortable with writing scripts in Python and applying basic shell and Git concepts before starting. If your first experience of Unix, Git, or Python is through the earlier courses, you should practice applying the tools to your own work in the time between those courses and this one.

Registration

Use this link to register for the upcoming Software Carpentry workshops at STFC.