What are the Software Carpentries?

The Carpentries are an international non-profit whose goal is to make coding inclusive and accessible. Their lessons are freely available and based on open-source coding languages, which people from all over the world have contributed to and taught from. What makes Carpentries workshops unique is their focus on learner-centered pedagogy. Using evidence-based tools like a color-coded sticky note system, live coding, and an instructor-helper-learner set-up. Carpentries workshops are interactive and supportive. Mar and Gus are both certified Carpentries Instructors, and our lab hosts a coding workshop each year using the Carpentries approach and a custom curriculum we developed.

What materials did we cover?

Day 1: Intro to R, shell, and git/GitHub

The first morning, Sophia Aredas (Schmidt Lab) introduced learners to R/RStudio, taught them to read data into R from files, and create beautiful plots with ggplot2.

Learners used data from Lake Ontario which was prepared by the US EPA and the Schmidt Lab, as well as publicly available data from the Great Lakes Acoustic Telemtry Observation System (GLATOS). The goal of this dataset is to explore how environmental variables affect the abundance of bacterial taxa across the lake. You can read more on this dataset from our recent preprint.. Below, you can see some of the fabulous graphs our learners produced during the workshop!

After we took a break, Cassidy Prince (Feaga Lab) taught learners to organize their files and directories using the Unix shell. Using those skills, Cassidy then taught the class how to use Git for version control, and how to link a local R project with a remote repository on Github. To cap off this challenging lesson, learners collaborated with each other using a shared repo on Github!

Day 2: More R and Dynamic Documents with RMarkdown

Gus (Schmidt Lab) started off the next day with a lesson on dplyr and tidyr functions which help organize, clean, and analyze data frames. Learners can now select specific columns, filter rows using logical operators, make new columns with mutate, summarize data quickly with group_by and summarize, reshape data with pivot_ functions, and use _join functions to combine data tables!

Finally that afternoon, learners were introduced to RMarkdown, allowing them to integrate their code, figures, statistics, and interpretation in a polished report. Lots of free work time allowed learners to explore their own questions in the dataset, and generate personalized reports.

How do you teach coding?

Our workshop was two whole days of active coding! Learners would arrive around 8:30 am and grab some coffee and a bagel. This also gave them time to set up their computers, check in with instructors, and ask questions. Then we start teaching! There’s always one instructor up at the front of the class room. They are typing and explaining code on their computer while the learners follow along on their own computers.

We use sticky notes to check in on learners. After each line or section of code, the instructor will ask learners to put a blue sticky note up if the code worked, and a pink sticky note if it didn’t. Whenever a pink sticky note pops up, one of our team of helpers (we had ~8 incredible helpers!) swoop in and quickly help the learner get back on track while the instructor continues with the lesson. This way, lessons aren’t interrupted for troubleshooting, but no learner gets left behind either!

The success of the workshop absolutely relies on the hard work and expertise of helpers. These helpers beta-tested our new curriculum, kept coding notes for learners to reference, and troubleshot errors on the fly. We were incredibly lucky to have such amazing helpers, including Alicia McElwee (Buckley Lab), Calla Bush St. George (Angert Lab), Ana Fernandez Galliano (Doerr Lab), Talyia Griffin (Gallagher Lab), Havi Rojer (Tory Hendry), Kailyn Hanke (First-year rotation student), and Kelly Miller (Schmidt Lab).

Post-survey feedback reflected the essential role of helpers:

  • “If I get any problem during the practice, I can have ppl to help me immediately!”
  • “They made it easy to follow along and made sure no body was left behind”
  • “They were very quick to come help…they were very kind”
  • “They always knew how to help”

And emphasized how special it is to have a workshop organized, taught, and supported by a graduate student team!

  • “The instructors are incredibly knowledgeable and create a very welcoming space. The content is comprehensive, streamlined and logical. I can easily apply this knowledge to my current projects.”
  • “Perfect pace, inclusive and positive environment, great teachers and helpers”
  • “Casual, friendly, peer taught”

I wish I could take this class…

You can! Our curriculum is written such that many learners can follow along on their own. You can access all our lessons here. If you try some of our lessons, or are interested in hosting similar workshops at your institution, we’d love to hear from you!

The Schmidt Lab also hosts weekly “Hacky Hours”, where students and post-docs can troubleshoot code and share short coding tutorials. These tutorials are quick, publicly available, and cover a wide range of data analysis subjects.

All Carpentries Lessons are similarly available, across multiple coding (and human) languages. There are also Community Lessons, which cover additional niche topics.

Quick Stats

  • 22 learners from 10 disciplines across Cornell
  • 16 hours of live coding
  • Hundreds of lines of code in multiple coding languages (R, Unix + Git, Markdown)
  • Over 65 bagels consumed