Teaching basic lab skills
for research computing

Frequently Asked Questions

Workshop at McGill University, January 2012


What is Software Carpentry?

Software Carpentry is a volunteer organization whose goal is to make scientists more productive, and their work more reliable, by teaching them basic computing skills. Founded in 1998, it runs short, intensive workshops that cover program design, version control, testing, and task automation. The Software Carpentry Foundation was created in October 2014 to act as a governing body for the project.

Why does Software Carpentry exist?

Because computing is now an integral part of every aspect of science, but most scientists are never taught how to build, use, validate, and share software well. As a result, many spend hours or days doing things badly that could be done well in just a few minutes. Our goal is to change that so that scientists can spend less time wrestling with software and more time doing useful research.

What is the relationship between Software Carpentry and Data Carpentry?

Data Carpentry is a sibling organization that focuses on data analysis skills rather than programming skills. We share the instructor training program, and are represented on one another's steering committees, but while our aim is to help scientists who are programming badly learn to program better, theirs is to teach people who are wrangling data manually how to automate make their work and make it more reproducible. We do plan to merge into one organization in 2018. See the blog post for more details on this announcement.

Who created all this?

Many people have helped Software Carpentry grow by creating lessons, teaching workshops, and building its web site—you can find a fuller description in this blog post.

Who pays for all this?

The costs associated with particular workshops are covered by their hosts: our instructors are volunteers, so these costs usually amount to travel and accommodation. Central costs, such as instructor training and curriculum development, are paid for by an administration fee for workshops that we help arrange, by membership dues from our partners, and by donations from supporters like you.

What is the core of Software Carpentry's curriculum?

Our core topics are:

  • automating tasks using the Unix shell;
  • structured programming in Python, R, or MATLAB; and
  • version control using Git or Mercurial.
Who can use the Software Carpentry name and logo?

The name "Software Carpentry" and the Software Carpentry logo are both trademarked, and may only be used with our explicit prior permission. We normally grant this to any training course that:

  • covers our core topics,
  • has at least one certified instructor teaching,
  • runs our standardised pre- and post-workshop assessment forms and provides us with the results (please contact us by email at team@carpentries.org to obtain copies of the assessment forms), and
  • sends us summary information about attendees (at a minimum, the number of people who attended).
Where can I learn more?

We have documented our experiences in "Best Practices for Scientific Computing" and "Software Carpentry: Lessons Learned", and in a handful of popular blog posts. For more information, please see our web site at http://software-carpentry.org, or contact us by email at team@carpentries.org.

Instructor Training

Who are the instructors?

Our instructors are scientists themselves—in fact, many are workshop alumni.

Why do people become instructors?

For many reasons:

  • To make their own lives better. By teaching their fellow scientists how to build and share better software, our instructors are indirectly helping to create things that they themselves can use.
  • Because it's fun. How could it not be?
  • To build a reputation. Teaching a workshop is a great way for people to introduce themselves to places they'd eventually like to work, and a great way to make contact with potential collaborators.
  • Get practice teaching. We're doing more every year to train instructors, and giving them chances to teach online as well—both of which are useful for people with academic careers in mind.
  • Help get people of diverse backgrounds into the pipeline. Computer Science is 12-15% female, and that figure has been dropping since the 1980s. Some of our instructors are involved in part because they want computational science to include a broader range of people.
  • Teaching forces you to learn new things, or learn old things in more detail than you already know. See for example "Graduate Students' Teaching Experiences Improve Their Methodological Research Skills".
  • The more you know, the less you have to write yourself. Putting a grant application together? Have a site review coming up? We probably have slides for that... :-)
  • To make the world a better place. The two things we need to get through the next hundred years are more science and more courage. Software Carpentry can't do much about the latter, but we can help with the former.
How can I become an instructor myself?

Becoming an instructor in the Carpentries requires that you take a two-day workshop we call Instructor Training. To request training as an instructor, please fill out this form. We currently have a backlog of people who want to complete instructor training. We also have a large number of member organizations for whom we need to run the training. Therefore, if you belong to an institution that is not affiliated to either Software or Data Carpentry, you may have to wait until we can offer open trainings again. We have run a number of these this year, and hope to run at least a couple more to try to manage the backlog of people wanting training. When open training is offered again, it will be offered online, in one-hour sessions, and will run over a number of weeks. Keep an eye on our newsletter, Carpentry Clippings, or our Twitter feed for these announcements.

Who can take part in the instructor training course?

While we would like to help everyone learn how to teach programming, space in the course is limited. We therefore give preference to people who have taken part in a workshop themselves, are planning to host a workshop, or have relevant prior experience. For more information, please send us email.

Why do we refer to students as 'learners'?

We settled on "learner" to avoid confusion: many professors don't think of themselves as students.


How can I contribute?

There are many other ways you can help beyond teaching. These include writing new lessons, answering learners' questions online, and maintaining this web site: please see this page for details. We are also always looking for more sponsors: please mail us if you'd like to help.

How can I acknowledge Software Carpentry's help in my own work?

We appreciate being mentioned in the acknowledgments sections of papers, theses, and proposals, as it helps us show current and potential funders what impact we're having. If you would like to do this, please use something like the following:

We were aided in this work by the training and other support offered by the Software Carpentry project [1].
[1] Software Carpentry: http://software-carpentry.org.
What data does the Software Carpentry Foundation collect and what does it do with it?

The Software Carpentry Foundation is is dedicated to the security and privacy of your data. To find out what data we collect, how we collect it, and what we do with it, please see our data privacy policy.

What other initiatives is Software Carpentry connected to?

Software Carpentry has a close relationship with Data Carpentry, which teaches basic concepts, skills, and tools for working more effectively with data. We also work with many other organizations: please see our list of supporters for details.

How should I cite Software Carpentry?

Please see our CITATION file for references.

Where can I buy Software Carpentry swag?

Shirts, mugs, stickers, and buttons are for sale in our CafePress store.


What is a workshop?

A workshop is a hands-on combination of instruction and programming, typically two days long, that covers the core skills needed to be productive in a small research team.

Will I really learn all this in just two days?

Not all of it—not even most of it—but enough to do your work more efficiently, and to start taking advantage of online resources like Stack Overflow that assume a certain level of background knowledge.

Is the workshop curriculum set in stone?

Our audience is as diverse as science itself, so we do our best to tailor our teaching to each group's needs. However, any workshop that wants to use our name and logo must cover a few core topics.

Why don't you teach X?

Data visualization, high-performance computing (HPC), Perl: the list of things we don't teach is much longer than the list of things we do. As with every curriculum, the question is not, "What would we like to add?" but, "What are we willing to take out in order to make room?" We believe our core topics are the absolute minimum scientists need to know in order to do computing well. We also believe that topics like HPC are covered well enough by other groups.

Are workshops free for learners?

Some workshops charge $20-$40 for registration, primarily because it reduces the number of people who register but not attend from 20-25% to roughly 5%.

Are workshops free for hosts?

The Software Carpentry Foundation charges an administration fee for workshops that it helps arrange. This money is used to cover central costs such as instructor training and curriculum development. There is no fee for workshops that host sites arrange on their own, and we encourage organizations to do this.

Are any pre-requisite skills necessary to attend a workshop?

The only truly necessary skill is a desire to become more efficient and effective when using a computer in scientific research. Each workshop is unique, and people with different skill levels will bring home different lessons, but everyone will learn something useful. That said, when we have enough space and instructors, we do try to stream people according to prior knowledge so that we can tailor training for them.

Do I need to bring anything to the workshop?

In most cases, yes: workshops are meant to be hands-on, which means your hands should be on a keyboard while you're learning. We encourage people to bring their own laptops so that they leave the workshop with a working set of tools installed and operational. Some sites have computers for training, but please arrange this in advance with the instructors.

We also ask people to install the software their workshop requires before showing up, so that we don't have three dozen people trying to download installers through the same wireless network at once. Each workshop's instructors will circulate a list of required software (and installation instructions) on the workshop website well in advance of the start.

Why two-day workshops?

Between 1998 and 2012, we taught this material in intensive week-long courses, as a regular university course, and online, with varying degrees of frustration. It turns out that researchers are busy people: improving their computing skills will make them more productive in the long run, but in the short run, they have to get a grant proposal in by Thursday, mark mid-terms by Monday, and meet a paper deadline next week. While two days may not sound like much, it's all many researchers can fit in.

Who are workshops for?

Our learners are typically graduate students in science, engineering, medicine, and related research-intensive disciplines who have written a few lines of code (either on their own or for an "Intro to Computing" class as undergrads) but aren't familiar with computing's equivalent of good laboratory practices. These short bios are representative of their needs and how we can help.

Do workshops really work?

Yes: two independent studies in 2012 found that people really were learning useful things, and these testimonials from past participants show just how much difference a couple of days of training can make. We are now using standardized pre- and post-assessment questionnaires and interviews to gain more insight.

Why else should I attend a workshop?

Along with their immediate benefits, workshops are a great opportunity to network with like-minded researchers. These skills are also useful for people transitioning out of research into other careers in science, technology, engineering, and medicine.

What if I can't make it to a workshop?

If there isn't a workshop near you, please check our calendar for one near a conference or other meeting that you're attending. We also have a large number of online video tutorials that cover most of our core material. Like everything else on our site, these are free to use under a Creative Commons license.

What does a typical workshop look like?

Workshops usually run for two consecutive days, starting at 8:30 and running to 4:30 or 5:00 each day with breaks for coffee and lunch. A typical workshop has 40 learners, 2 instructors, and 2-3 helpers wandering the room answering questions during practical sessions. (These helpers are often alumni of previous workshops who are hoping to become instructors themselves.)

Short tutorials alternate with hands-on practical exercises, and participants are encouraged both to help one another, and to apply what they are learning to their own research problems during, between, and after sessions.

How can I attend a workshop?

Dates and venues of upcoming workshops are on our calendar, on our blog, and on Twitter.

Should I bring friends?

Absolutely. We have found in the past that if people attend in groups (e.g., if a whole lab's worth of students show up together), then everyone gets more out of the training. People who sign up together are more likely to have similar interests and backgrounds, and are usually less inhibited about asking questions, and asking one another for help, than total strangers. Plus, it's a great opportunity to wear that departmental t-shirt that's sitting in your drawer...

How can I host a workshop?

If you'd like us to teach a workshop for you, the first step is to get in touch. We'll find instructors in your geographic and/or academic area, and do advertising, registration, and software setup, while you'll take care of travel costs and administrative overheads, booking space, local publicity, finding helpers, and catering (if desired). If you want to know more about what is involved in running a workshop, please see our operations guide.

How can I run a workshop?

Anyone who wants to run a workshop can do so—all our teaching materials are freely available under the Creative Commons Attribution license, so you are free to re-use and re-mix them when and how you want so long as you cite us at the original source (e.g., by providing a link back to this site). If you want to know more about what is involved in running a workshop, please see our operations guide.

Can anyone run a workshop?

While anyone can use our material, the name "Software Carpentry" and our logo are both trademarked, and may only be used if certain conditions are met. We're all in favor of teaching people iPhone game programming, multigrid methods using C++ and MPI, and scientific grant writing, but we've worked hard to establish an identity for Software Carpentry, and wish to protect it.

Can I teach commercially?

Yes, but you may not call your course "Software Carpentry" or use our logo without first obtaining permission.


How do I become a core contributor?

A core contributor is someone who can commit changes directly to our shared repositories. The process for becoming one is taken directly from the Python project: when you have consistently contributed patches which meet quality standards without requiring extensive rewrites prior to being committed, you may qualify for commit privileges and become a core contributor of Software Carpentry. You must also work well with other core contributors (and people in general) as you become an ambassador for the project.

Where are Software Carpentry materials stored?

All of our slides, notes, and example programs are in Git repositories at https://github.com/swcarpentry, and the source for our website (including our blog) at https://github.com/swcarpentry/website.

How do I set up a website for a workshop?

For instructions on setting up a website for a workshop, please see the workshop template home page or this slideshow.

How do I create a new lesson or modify an existing one?

The template for lessons lives in this GitHub repository. For instructions on creating a new lesson or modifying an existing one, please see the lesson example home page or this slideshow.

How do I set up and run a workshop?

Please see our operations guide for instructions on setting up and running a workshop. This includes links to our checklists and describes the surveys we use to assess learners' and instructors' experiences.

Dialogue & Discussion

You can review our commenting policy here.