The Carpentries is preparing to retire this handbook at the end of 2023. Existing content that has not already been replicated elsewhere will be relocated. See the relevant issue on the source repository for more details.

Chapter 1 Guiding principles

Carpentries curricula are developed based on the results of research in the science of teaching and learning. We rely on findings synthesized in the book How Learning Works: Seven Research-Based Principles for Smart Teaching (Ambrose et al. 2010). We use this text in our Instructor Trainer training program, so that Trainers (who teach our Instructor Training courses) can understand why we teach the way we do, and why our lessons are designed the way they are.

The authors identify seven principles of learning (direct quotation from the book are bolded):

  1. “Students’ prior knowledge can help or hinder learning.” – Identifying what the learners know before coming to our workshops help us adjust what we teach. One way we do this is through our pre-workshop surveys. We also give the learners frequent exercises (or “challenges”) throughout our lessons, which help Instructors and learners identify and correct misconceptions.
  2. “How students organize knowledge influences how they learn and apply what they know.” – Human working memory is limited, and can only handle about five to seven separate items of information at a time. We organize our lessons to introduce a few concepts at a time, and then provide challenges to give learners an opportunity to practice using these new concepts. This lets learners build connections between new concepts and their previous knowledge and transfer this new knowledge into their long-term memory, increasing the likelihood that they will be able to use this information successfully in new contexts.
  3. “Students’ motivation determines, directs, and sustains what they do to learn.” – Our learners come to our workshops already motivated to learn the concepts we teach. They realize they need the skills we teach to conduct their research more effectively. They have experienced the pain that comes with copying and pasting data across spreadsheets, or having to re-do complex graphs over and over as new data come in. However, they may also be intimidated by how much they have to learn before being proficient programmers and data analysts. Two strategies we use to keep our learners motivated are: (1) to create a positive learning environment, and (2) to teach the most useful skills first. We teach both of these in our Instructor Training program, and discuss how they influence curricular design below.
  4. “To develop mastery, students must acquire component skills, practice integrating them, and know when to apply what they have learned.” – Our lessons use frequent challenges to provide opportunities for learners to practice applying their new skills. These challenges are designed to incrementally build on each other and integrate previously taught and new skills. Careful attention to exercise design helps assure learners will be able to transfer the skills they acquire in our workshop to their own research.
  5. “Goal-directed practice coupled with targeted feedback enhances the quality of students’ learning.” – When Learners try to solve the challenges we include in our lessons, they receive direct feedback from the computer - either an error message or the expected answer. Error messages are often opaque, and do not on their own help learners advance in their learning process, making them frustrated and demotivated. Our lessons are designed to be delivered as real-time in-person instruction, so that learners get feedback from Instructors and workshop helpers that is human-parsable and directed to their level of understanding. Furthermore, challenges used in a lesson should only require the skills that have already been introduced during the workshop, and should have a limited range of possible answers.
  6. “Students’ current level of development interacts with the social, emotional, and intellectual climate of the course to impact learning.” – Providing a positive learning environment reduces learners’ stress and helps increase their confidence in their ability to use the skills we teach. Creating this positive environment is a responsibility shared among all participants: Instructors, helpers, workshop hosts, and learners. Setting expectations by introducing our Code of Conduct at the start of each workshop, and enforcing it, contributes to making the workshop a welcoming space for everyone. Other strategies we use to create a positive learning environment are covered in our Instructor Training. Curricular content also plays a major role in creating a positive environment: examples chosen should not be alienating, skill level must be appropriate for the audience, and the examples and challenges must be directly applicable for our learners. For instance, when a learner creates a visualization that they can directly apply to their own data, it reinforces their motivation and favors a positive learning climate.
  7. “To become self-directed learners, students must learn to monitor and adjust their approaches to learning.” – In-person workshops allow Instructors to model the thinking process that is needed to address the challenges in our lessons. As an Instructor, being very explicit (“thinking aloud”) about the steps of the mental model that are involved in identifying the functions to use, the values of the arguments they take, and the order in which to call these functions to solve an exercise, helps learners to think of the questions they need to ask themselves when facing new problems to solve. While this type of approach works for any level of complexity in the challenges we teach, it works best for the most advanced ones, where several steps need to be integrated to come to the solution. Before reaching this level of complexity, the challenges can be designed to guide this process, using scaffolding. Scaffolding is the process of providing support to a learner while new subjects and concepts are introduced. Scaffolding assists learners as they progress through increasingly complex code creation by breaking the complex code into smaller, more manageable chunks. Common practice problems used in instructional scaffolding are Parson’s problems, where all the pieces of code to answer the problem are already written but are not in the correct order; and, fill in the blanks. Instructional scaffolding might be one of the most important things we use in our workshops. It sets learners on a successful path for further self-directed learning. When developing the content of the curriculum, think of the kind of thinking process that is needed to successfully address the research questions in your field.

Applying these principles effectively requires that they are incorporated into both what is taught (content) and how it is taught (delivery). Our Instructor Training program focuses on teaching Instructors how to use these principles in their teaching. In this handbook, we focus on applying these principles to curriculum design. Before starting to create lesson content, we highly recommend that you familiarize yourself with our Instructor Training curriculum.

1.1 Backward design

Backward design is an instructional design model that starts with identifying the desired outcomes of a learning experience, including core skills and concepts that learners need to acquire. These identified outcomes are used to develop course content and assessments to measure learners’ progress towards these outcomes. This model was developed by Grant J. Wiggins and Jay McTighe in the late 1990s and is expanded on in their text Understanding by Design. We use backward design in developing our curricula because of its focus on identifying clear, measurable learning goals and providing assessments aligned with those goals.

In essense, the backward design process has three stages:

  1. Identify the practical skills we aim to teach.
  2. Design challenges to give an opportunity for our learners to practice and integrate these skills.
  3. Identify what we need to teach for our learners to acquire these skills.

This approach ensures that all the skills we teach work together to meet the over-arching goals of our curriculum. It also reduces the risk that we won’t teach a concept learners need in order to be able to master the skills we aim to teach. Similarly, it avoids teaching topics that do not help us (and our learners) meet our goals.

Reducing distractions is part of our lesson design as we strive to reduce cognitive load on learners. To this end, we also develop our lessons to be centered around a narrative and a dataset they can relate with quickly.

Because our workshops are domain-specific, the data we use, and the type of questions we ask with the data are already somewhat familiar to our learners. Their energy and focus can be directed towards learning the skills we teach rather than on getting familiar with data and concepts that are foreign to them. This strategy also increases the motivation of our learners. By learning how to solve problems that are familiar to them, they can more easily transpose these skills directly to their own data, and have a good starting point to continue their learning process as they try to solve new or more complex problems with their own data.

1.1.1 Identifying the practical skills

Our primary aim in a Carpentries workshop is to increase the confidence of our learners. We want to demystify and make accessible the process of computing and analyzing data. More than a third of learners at our workshops have little to no coding experience (Jordan, Michonneau, and Weaver 2018). Our workshops provide them an opportunity to try, in a friendly environment, something they perceive as intimidating.

Another important goal is to make the research life of our learners easier. We emphasize teaching “good enough practices” (Wilson et al. 2017) - concrete skills that are accessible, able to be adopted by researchers of any skill level, and likely to make an immediate positive impact on learners’ work. Teaching defensive programming, how to use spreadsheets effectively, or how to organise files consistently across research projects, are practical skills that can save a lot time when learners apply them in their own research.

When developing a new curriculum, the first step is to identify the skills that will be the most immediately useful to learners and have the biggest impact on their work. This will vary a lot, so having a clear idea of your lesson’s intended audience is critical at this stage.

We will discuss in detail the process of defining your audience and identifying these core skills for your lesson in a later chapter.

1.1.2 Designing challenges to assess understanding

Once you have identified these high-impact skills, the lesson content should be designed to create frequent opportunities for learners to practice these skills while exemplifying the tasks they perform in their daily work. Live coding and hands-on challenges that learners can directly relate to should allow them to envision how they can start using the skills taught with their own data as soon as the workshop is over.

In traditional Western instruction, learners are presented with new material during course time and then sent home to practice applying the concepts learnt on their own. A major limitation of this approach is that learners often encounter difficulties in trying to apply their new knowledge or skills and need to troubleshoot on their own, without support. Education research shows that novices learn best when they are given feedback and coaching in real time while practicing their new skills (see principle number 5 above) so that errors are corrected and mis-steps redirected before mistakes have a chance to become discouraging or engrained in learners’ memory.

To this end, Carpentries workshops are designed to provide frequent opportunities for learners to practice new skills. To be helpful in providing useful feedback, these challenges need to both be:

  1. narrowly targeted to the skills that have been taught (i.e. not to depend on untaught concepts), and;
  2. diagnostic (Instructors should be able to tell what the learner is misunderstanding based on how they answer the question).

The practical aspects of creating useful challenge problems is discussed in a later chapter.

1.1.3 Planning the content of the lesson

After deciding on a list of core skills your learners need, and creating a set of well-targeted, diagnostic exercises, you can then start to create the bulk of the content for the lesson. This material can be thought of as the “script” for the instructor to follow while teaching and should be planned very carefully to complement the exercises you’ve already designed. We cover the process of creating curricular content in a later chapter

1.2 Creating a narrative and selecting a dataset

Because we strive to provide a realistic experience for learners that is as similar as possible to the workflow they would use in their own work, our lessons use real data and are structured in a natural flow that corresponds to how a learner would experience working with their data in real life. For many curricula, this means starting with a lesson on data organisation and progressing through data cleaning, analysis, and visualisation or reporting. It is important to choose a dataset that is an authentic representation of what your audience would encounter in their day-to-day work. The practicalities of chosing an appropriate dataset are covered in a later section of this handbook.

1.3 Limitations of our approach

Learners can’t go from complete novices to experts in two days (or in the course of any single class). We aim to provide learners with three things:

  1. A set of foundational concepts and skills;
  2. A mental model that connects those concepts into a useful framework and that can be built upon in their future learning; and
  3. The motivation and skillset they need to continue learning past the end of the workshop.

Managing learners’ expectations, and clearly communicating to them what they will (and won’t) be able to do by the end of the workshop, is important because it limits the chance of demotivation.


Ambrose, Susan A, Michael W Bridges, Michele DiPietro, Marsha C Lovett, and Marie K Norman. 2010. How Learning Works: Seven Research-Based Principles for Smart Teaching. John Wiley & Sons.

Jordan, Kari, François Michonneau, and Belinda Weaver. 2018. “Analysis of Software and Data Carpentry’s Pre- and Post-Workshop Surveys.”

Wilson, Greg, Jennifer Bryan, Karen Cranston, Justin Kitzes, Lex Nederbragt, and Tracy K. Teal. 2017. “Good Enough Practices in Scientific Computing.” PLOS Computational Biology 13 (6): 1–20.