Git should be installed on your computer as part of your Bash install (see the Shell installation instructions).
Dec 2-5, 2025
10:00 am - 15:00 pm CET
Instructors: Charlie Greene, Anouk Vlug, Agustin Medina, Elisa Rodenburg, Sophie Arnoult
Helpers: Sreenithya Avadakkam, Bauke van der Velde, Thomas Pronk
The Carpentries project comprises the Software Carpentry, Data Carpentry, and Library Carpentry communities of Instructors, Trainers, Maintainers, helpers, and supporters who share a mission to teach foundational computational and data science skills to researchers.
Want to learn more and stay engaged with The Carpentries? Carpentries Clippings is The Carpentries' biweekly newsletter, where we share community news, community job postings, and more. Sign up to receive future editions and read our full archive: https://carpentries.org/newsletter/
Software Carpentry aims to help researchers get their work done in less time and with less pain by teaching them basic research computing skills. This hands-on workshop will cover basic concepts and tools, including program design, version control, data management, and task automation. Participants will be encouraged to help one another and to apply what they have learned to their own research problems.
For more information on what we teach and why, please see our paper "Best Practices for Scientific Computing".
Who: The course is aimed at graduate students and other researchers. You don't need to have any previous knowledge of the tools that will be presented at the workshop.
Where: 105 De Boelelaan. Get directions with OpenStreetMap or Google Maps.
When: Dec 2-5, 2025; 10:00 am - 15:00 pm CET Add to your Google Calendar.
Requirements: Participants must bring a laptop with a Mac, Linux, or Windows operating system (not a tablet, Chromebook, etc.) that they have administrative privileges on. They should have a few specific software packages installed (listed below).
Accessibility: We are committed to making this workshop accessible to everybody. The workshop organizers have checked that:
We are dedicated to providing a positive and accessible learning environment for all. We do not require participants to provide documentation of disabilities or disclose any unnecessary personal information. However, we do want to help create an inclusive, accessible experience for all participants. We encourage you to share any information that would be helpful to make your Carpentries experience accessible. To request an accommodation for this workshop, please fill out the accommodation request form. If you have questions or need assistance with the accommodation form please email us.
Glosario is a multilingual glossary for computing and data science terms. The glossary helps learners attend workshops and use our lessons to make sense of computational and programming jargon written in English by offering it in their native language. Translating data science terms also provides a teaching tool for Carpentries Instructors to reduce barriers for their learners.
Workshop Recordings: Carpentries workshops are designed to be interactive rather than lecture-based, with lessons that build upon one another. To foster a positive online learning environment, we strongly recommend that participants join in real time. As a result, workshop recordings are not recommended and may not be available to learners.
Contact: Please email first@example.org or second@example.org for more information.
Roles: To learn more about the roles at the workshop (who will be doing what), refer to our Workshop FAQ.
Everyone who participates in Carpentries activities is required to conform to the Code of Conduct. This document also outlines how to report an incident if needed.
Please be sure to complete these surveys before and after the workshop.
| Before | Pre-workshop survey |
| 09:30 | Pre-course help with installations and setup |
| 10:00 | Introduction to programming in Python |
| 11:20 | Morning break |
| 11:30 | Introduction to programming in Python (Continued) |
| 12:30 | Lunch break |
| 13:00 | Analysing data with Python |
| 14:00 | Afternoon break |
| 14:10 | Plotting with Python |
| 14:45 | Wrap-up |
| 15:00 | END |
| 10:00 | Loops & Logic |
| 11:20 | Morning break |
| 11:30 | Loops & Logic (Continued) |
| 12:30 | Lunch break |
| 12:30 | Room change to BV-1H26, up one floor. |
| 13:15 | Writing functions in Python |
| 14:00 | Afternoon break |
| 14:10 | Debugging & Errors |
| 14:45 | Wrap-up |
| 15:00 | END |
| 10:00 | Icebreaker |
| 10:05 | Files, folders, and paths in the unix shell |
| 11:20 | Morning break |
| 11:30 | Shell: Pipes and filters |
| 12:30 | Lunch break |
| 13:00 | Change room to HG-14A20 (Hoofdgebouw/Main building, 14th floor) |
| 13:15 | Introduction to Git |
| 14:00 | Afternoon break |
| 14:10 | Introduction to Git (Continued 2) |
| 14:45 | Wrap-up |
| 15:00 | END |
| 10:00 | Git in action |
| 11:20 | Morning break |
| 11:30 | Git for collaboration |
| 12:30 | Lunch break |
| 13:15 | Open science in programming |
| 14:00 | Afternoon break |
| 14:10 | Question time: clarifying issues |
| 14:45 | Wrap-up |
| 15:00 | Post-workshop Survey |
| 15:10 | END |
To participate in a Software Carpentry workshop, you will need access to software as described below. In addition, you will need an up-to-date web browser.
We maintain a list of common issues that occur during installation as a reference for instructors that may be useful on the Configuration Problems and Solutions wiki page.
Git is a version control system that lets you track who made changes to what when and has options for easily updating a shared or public version of your code on github.com. You will need a supported web browser.
You will need an account at github.com for parts of the Git lesson. Basic GitHub accounts are free. We encourage you to create a GitHub account if you don't have one already. Please consider what personal information you'd like to reveal. For example, you may want to review these instructions for keeping your email address private provided at GitHub.
Git should be installed on your computer as part of your Bash install (see the Shell installation instructions).
Please open the Terminal app, type git --version and press
Enter/Return. If it's not installed already,
follow the instructions to Install the "command line
developer tools". Do not click "Get Xcode", because that will
take too long and is not necessary for our Git lesson.
After installing these tools, there won't be anything in your /Applications
folder, as they and Git are command line programs.
For older versions of OS X (10.5-10.8) use the
most recent available installer labelled "snow-leopard"
available here.
(Note: this project is no longer maintained.)
Because this installer is not signed by the developer, you may have to
right click (control click) on the .pkg file, click Open, and click
Open in the pop-up dialog.
If Git is not already available on your machine you can try to
install it via your distro's package manager. For Debian/Ubuntu run
sudo apt-get install git and for Fedora run
sudo dnf install git.
When you're writing code, it's nice to have a text editor that is optimized for writing code, with features like automatic color-coding of key words. The default text editor on macOS and Linux is usually set to Vim, which is not famous for being intuitive. If you accidentally find yourself stuck in it, hit the Esc key, followed by :+q+! (colon, lower-case 'q', exclamation mark), then hitting Return to return to the shell.
nano is a basic editor and the default that instructors use in the workshop. It is installed along with Git.
nano is a basic editor and the default that instructors use in the workshop. See the Git installation video tutorial for an example on how to open nano. It should be pre-installed.
nano is a basic editor and the default that instructors use in the workshop. It should be pre-installed.
Python is a popular language for research computing, and great for general-purpose programming as well. Installing all of its research packages individually can be a bit difficult, so we recommend Conda-forge, an all-in-one installer.
Regardless of how you choose to install it, please make sure you install a Python version >= 3.9 (e.g. 3.11 is fine, 3.6 is not).
We will teach Python using the Jupyter Notebook, a programming environment that runs in a web browser (Jupyter Notebook will be installed by Miniforge). For this to work you will need a reasonably up-to-date browser. The current versions of the Chrome, Safari and Firefox browsers are all supported (some older browsers, including Internet Explorer version 9 and below, are not).
C:\Users\[your-username]\) within an organisation.
It may cause issues with the installation of the Carpentries environment.C:\Users\[your-username]\Downloads folder:
C:\Users\[your-username]\Downloads
Minforge3-Windows-x86_64.exe)C:\Users\[your-username]\Downloads folder.carpentries_environment.yml and the "Save as type" option is set to YML file (*.yml)cd ~/Downloadscurl -L -O https://raw.githubusercontent.com/carpentries/workshop-template/refs/heads/gh-pages/data/carpentries_environment.ymlC:\Users\[your-username] folder. If it does, continue to Step 8 below:![Miniforge Prompt [your-username] as froggleston](assets/img/miniforge_prompt.png)
C:\Users\froggleston. Your username will be different!
whoami and press Enter[machine-name]\[your-username]. You only need the [your-username] part after the slash, i.e. froggleston in this example.cd C:\Users\[your-username] and press Enter
cd Downloads and press Enterconda env create -f carpentries_environment.yml and press Entercd ~/Downloads).
bash Miniforge3-and then press Tab to autocomplete the full file name. The name of file you just downloaded should appear. Press Enter (or Return depending on your keyboard).
yes and press Enter (or Return) to approve the license.yes and press Enter (or Return) to prepend Miniforge to your PATH (this makes the Miniforge distribution the default Python).Downloads folder.carpentries_environment.yml and the "Save as type" is set to YML file (*.yml)cd ~/Downloadscurl -L -O https://raw.githubusercontent.com/carpentries/workshop-template/refs/heads/gh-pages/data/carpentries_environment.ymlconda env create -f ~/Downloads/carpentries_environment.ymlcd ~/Downloads).
bash Miniforge3-and then press Tab to autocomplete the full file name. The name of file you just downloaded should appear. Press Enter (or Return depending on your keyboard).
yes and press Enter (or Return) to approve the license.yes and press Enter (or Return) to prepend Miniforge to your PATH (this makes the Miniforge distribution the default Python).Downloads folder.carpentries_environment.yml and the "Save as type" is set to YML file (*.yml)cd ~/Downloadscurl -L -O https://raw.githubusercontent.com/carpentries/workshop-template/refs/heads/gh-pages/data/carpentries_environment.ymlconda env create -f ~/Downloads/carpentries_environment.yml