How To Teach Programming To People In Prison (Without Computers)

Using unplugged strategies to teach data science without a computer

Alex Wright
Towards Data Science

--

How can we teach data science and programming without computers? It may sound backwards today, but it turns out we’ve been doing something like this for many decades. Only recently have we forgotten just how possible, and even advantageous, it can be to separate the computer from computer science.

How can we teach data science and programming to people in prison without computers (or internet)? That is a much more complicated question, and answering it goes far into uncharted territory.

Examples of the free printed educational guides that Level sends into prisons. We’re embarking on a journey to create guides that teach data science and programming in R for people in prisons who don’t have access to computers. (Image by author)

At Level, we create and distribute high quality, free, Creative Commons licensed educational and job training content to incarcerated men and women at mass scale.

Over the next year, we’ll begin distributing our first programming guides written for incarcerated learners who have no access to computers or the internet. The never-been-done-before aspect of this project led us to look to the past to discover how researchers and programmers have approached these issues before.

We’re starting with lessons in data science, data visualization and the R programming language. We chose this starting point because it can be more physical and tangible. Data science and data visualization can adapt to different environments better than web development or app design. Individual learners can personalize the data that is collected and analyzed. “Data is everywhere” is true even in prisons.

Teaching programming to incarcerated men and women — some of the most disconnected people in America — may seem absurd. But consider this. Every year, 600,000 people are released from state and federal prisons without much of a prospect for a job or a future better than the one they had when they got locked up. That’s a population the size of Baltimore or Las Vegas. Every single year. Well over half are re-arrested and go back to prison, costing all of us over $80 billion a year and tearing up families and communities along the way. Many incarcerated individuals are eager learners dying for new opportunities.

What people in prison have is time. Lots of time. And creativity. And perseverance. What they don’t have is … a lot of things, including computers, the internet and access to the kinds of self study courses many of us on the outside take for granted. There are very cool programming courses offered in some select prisons by organizations like The Last Mile and Unloop, but these programs are accessible to only a fraction of America’s prison population. And COVID-19 has locked down even those opportunities.

How can we introduce the life changing opportunities provided by a career in data science to America’s incarcerated population? And how can we do it at scale so that more of the nation’s 2.3 million incarcerated men and women — who don’t have access to computers or the internet — can discover new career opportunities? Absurd as it may be, history is a great guide to make this idea a reality.

Graduation ceremony at Mule Creek State Prison. Image via California Department of Corrections and Rehabilitation, public domain.

Computer science is no more about computers than astronomy is about telescopes

Most of us assume that learning a skill requires access to the tools needed to conduct that skill. Learning to program requires access to a computer and the internet. But does it?

There’s a growing set of ideas, known as unplugged computer science, that re-thinks the fundamental nature of teaching computational thinking, data literacy and even programming. Getting a foothold in the 1980s and expanding significantly in the 2000s, unplugged computer science theories say quite proudly that not only can we teach computer science without a computer, but in many ways, we should.

Unplugged computer science began as an exploration about different ways to teach children the basics of programming and computer science. If you have young kids or spend much time around them, it’s immediately apparent that they can’t type very well and don’t sit still long enough to learn to program the way we commonly teach programming.

Mike Fellows and Tim Bell, two like minded professors and computer scientists from opposite sides of the planet, got together in the late 1980s and developed a new idea for throwing out the computer when teaching computers to children. They devised games and activities that teach children to think about the ideas of programming — abstraction, decomposition, algorithmic design, generalization, automation, variables, loops, conditionals — using string, paper and cups instead of screen time.

The benefits of unplugged computer science were immediate. Teachers didn’t have to have a degree in computer science — or even an understanding of it — to help kids learn about computers. Schools didn’t even need to have computers. And kids could do what they do best — run around and scream — while actually learning about computational concepts like if / then conditionals.

It turns out that necessity had been the mother of invention for unplugged computer science long before Mike Fellows and Tim Bell. In the early decades of programming, coders worked with pen and paper to refine and test their algorithms before they got access to rare machines that could execute their code. Mistakes were expensive. Paper wasn’t. Learning to code didn’t start with a keyboard and a screen.

What can we learn from kids who can figure out the core ideas of programming without computers? If the early days of programming required a lengthy apprenticeship of pen and paper coding, can we teach today’s adults how to be good — and high earning — programmers even if they don’t have access to a computer? Is unplugged computer science a pathway to bringing more diverse minds and talents into the field of programming?

Photo by Greg Rakozy on Unsplash

Separating the computer from computer science

The famous quote “Computer science is no more about computers than astronomy is about telescopes” is attributed to Dutch computer scientist Edsger Dijkstra but actually coined by unplugged co-author Mike Fellows. Astronomy and computer science are concepts, big picture ideas, professions. Telescopes and computers are tools. One big problem with teaching computer science is that the traditional approach has put learning how to use the tool before learning about the concepts, the big picture ideas and the applications.

Tim Bell explains the metaphor further. “Traditionally, for computer science, we’ve used programming as the gateway to computer science. Students are told ‘Enroll for computer science and you’ll learn a whole year of programming and then we’ll start showing you some cool stuff you can do with it.’ That’s a bit like saying ‘There’s this thing called astronomy. You probably don’t know what it’s about. Trust me, it’s really cool. But first of all, learn about telescopes for a year or two. Then we’ll tell you what it’s actually about.’”

This cart-before-the-horse approach has a lot of problems. One of which is access. If you don’t have access to the tools and the techniques to master them, you can’t proceed on to the career. According to Tim, “One of the important social things about changing the way we teach computer science is that the traditional view of ‘learn coding/programming first and then we’ll show you the cool stuff’ blocks out a lot of people who can’t see the point of coding/programming. If you can show them the point, they can see that it is worth learning.” The same applies to those who can’t get ahold of the tools.

Long before the two started out to change the way computers can be tough to kids, adults had been working with unplugged approaches to computer science out of necessity.

Detail of “note G” for “Diagram for the computation by the Engine of the Numbers of Bernoulli” by Ada Lovelace — the first published algorithm tailored for implementation on a computer. Ada Lovelace wrote this algorithm — of course — without a computer. Public domain (published in 1843).

The principles of unplugged computer science were in place before they had a name

A tweet by programmer Vicki Boykis about how her mom learned to program in the former USSR led to her mom writing a long form article called Being A Woman In Programming In The Soviet Union documenting how she learned to code in the late 70s and early 80s. The story and visuals are stunning.

“In the programming classes, we studied programming the ‘dry’ way: using paper, pencil and eraser. In fact, this method was so important that students who forgot their pencils were sent to the main office to ask for one … Our teacher used to go for one week of ‘practice work and curriculum development,’ to a serious IT shop with more advanced machines every once in a while. At that time, the heavy computing power was in the ES Series, produced by Soviet bloc countries. These machines were clones of the IBM 360. They worked with punch cards and punch tapes. She would bring back tons of papers with printed code and debugging comments for us to learn in the classroom … After two and half years of rigorous study using pencil and paper, we had six months of practice.”

A tweet by programmer Alvaro Videla talks of Uruguayan coders in the 1960s who would program the whole week on paper and then take a ferry and go test their programs in Argentina, which was the closest place with a computer. In these early days, young programmers didn’t have access to computers to run their code. “Computers were for executing programs, not editing text” states a programmer who learned the skills according to the original “dry” method, writing on a yellow legal pad.

Going back even further into the 1840s, we can look to Ada Lovelace, the first programmer, famously known for her work on Charles Babbage’s mechanical general-purpose computer, the Analytical Engine. Ada wrote the world’s first algorithm without ever having used a computer. In the beginning, of course, there were no computers. People invented computers, not the other way around. It’s clear we can teach programming, computer science and coding without computers.

Gameboard used in Haathi Mera Saathi (My Elephant Friend) to teach programming to children in rural India. Note the { and } symbols that surround the loop. These symbols were later used by the children while typing in Java. Image used with permission of authors, credit AMMACHI labs.

Unplugged works on both sides of the digital divide

There’s a fascinating research study about children in rural India called Of Elephants and Nested Loops: How to Introduce Computing to Youth in Rural India. Elephants were used (representative ones, not real ones) because many of the kids had likely not seen a computer, but were familiar with the idea of an elephant trainer giving instructions to be carried out by an elephant. Nested loops is a concept in programming that refers to repeated patterns that are part of larger repeated patterns.

“Though we all struggle with the feeling that technology controls us (rather than us controlling it), we must also recognize that the global poor have no voice where design decisions are made. They are not in the conversations, companies, conferences or forums along with those who make the technology that run, say, the system they need to claim government grants, or bank online, or even communicate with family and watch entertainment. As they fall to the far end of being receivers not producers, we feel it especially important to find ways to shift this and help them become makers.” [1]

Girls playing Haathi Mera Saathi (My Elephant Friend) board game. Image used with permission of authors, credit AMMACHI labs.

The researchers’ game, called Haathi Mera Saathi (My Elephant Friend), proved to be an effective approach for taking the children from a state of having no experience with computers to a state where they create interactive applications in a Java based environment. There were several actionable keys to success identified by the researchers.

One is a need for physicality and tangibility in the early stages of learning to code. Kids sometimes have trouble knowing right from left, so they all started by practicing moves themselves on a large physical gameboard. Then they moved to a small paper gameboard with pieces and instructions that are mapped to actual programming code. Then they moved on to Java processing. The physical representations were critical to put a picture in the childrens’ minds of what was actually happening. By the time the kids were typing, they knew what they were typing, or what it represented, thinking back to the physical, tangible representation of the ideas.

Example code from the Scratch programming language, part of the Non-Euclidean Lemon Grab Experiment by griffpatch.

Another actionable key to success was using localized, understandable metaphors. In the West, a popular introductory coding language is Scratch, developed by MIT and used my many on code.org. Scratch is a block based language that kids can understand. They can look at the physical blocks (not like blocks of wood, but self contained blocks of code) and understand what is going on. Kids use Scratch to make cartoons dance and music loop repeatedly and lots of other fun stuff. Like a really mind bending Non-Euclidean Lemon Grab Experiment.

“MIT’s Scratch is one of the most notable examples of mini languages, embodying the constructionist ideal of a learner oriented environment offering a rich graphical programming environment. Its interface is easy-to-learn yet we feel there is a lot of scope for creating learning environments that lower the bar even further, especially for third world youth, by making it less abstract and more concrete.”[2]

The researchers needed to get even more basic than Scratch to get rural youth in India to understand the foundational ideas of programming. Instead, they used paper cutouts of elephants, trees and food and then used basic instruction cards that had helpful coding notation included. And it worked.

Another recent study called To Scratch Or Not To Scratch?: A Controlled Experiment Comparing Plugged First And Unplugged First Programming Lessons paired two groups of elementary school children, aged 8 to 12. Unlike the study Of Elephants and Nested Loops, the researchers in this study worked with participant children who had no problem accessing computers or understanding how to use them. Rather, the researchers of this study questioned when was the right time to introduce computers into the childrens’ computer science education.

One group of kids received 4 weeks of unplugged computer science lessons while the other received 4 weeks of traditional plugged in computer science lessons. Then both groups received 4 weeks of Scratch programming lessons.

“After eight weeks there was no difference between the two groups in their mastering of programming concepts. However, the group that started with unplugged lessons was more confident of their ability to understand the concepts — they demonstrated better self-efficacy beliefs. Furthermore, the children in the unplugged first group used a wider selection of Scratch blocks.”[3]

There are dozens of Scratch blocks that fall in categories like motion, looks, sound, event, control, sensing, operators and variables. As you might imagine, kids could do fine working with just a subset of the blocks, especially at first. The children that learned unplugged computer science first went on to explore a wider array of different block types, and were more confident doing so.

The actionable finding from To Scratch Or Not To Scratch is that starting with unplugged teaching strategies can lead to a more nuanced understanding of programming concepts, even among elementary school learners who have regular access to technology. Kids and adults on both sides of the digital divide can benefit from working offline to learn concepts key to a later career in computer science.

Image via Adobe Stock under license to Alex Wright.

So what was that thing about teaching data science and programming to people in prison?

All of this is a great exercise in history and research but doesn’t specifically answer the tougher question. How exactly can we use this reframed thinking to support some of the most digitally disconnected learners on earth — incarcerated Americans — to get a foothold into well paying careers that use data science, computational thinking, computer science and programming?

At Level, we send small booklets directly to people in prison through the US Mail. Doing so, we can reach even incarcerated Americans in solitary confinement and maximum security — inmates who would never be allowed in a prison education or job training class. So the thing we have to work with is printed paper. No Raspberry Pi. No microbit. No nothing except printed paper. No staples in the paper. Not even blank paper (yes, really).

During COVID-19, non-essential programs in prisons across most of the country — including college classes and most other educational courses — have been suspended to prevent the spread of COVID-19 both into and out of prisons. Many incarcerated individuals are confined to their cells for 23 hours a day and are cut off from traditional educational or career training classes. Even before COVID-19, there was no computer lab that incarcerated men and women could go to.

So these little printed paper guides are the medium we have. The question now has been reduced down to this — how far can we go with unplugged computer science training to give instruction to adults without computers? Can we give just a basic introduction to computational thinking? Can we actually get into programming? If so, what does that look like? How can learners check their work? How can they de-bug their code?

Here’s what we’ve learned from the previous research summarized earlier in this story:

  • it is possible to teach computer science without a computer
  • use physical, tangible representations and lessons
  • use localized, socially relevant examples and metaphors
  • focus on the advantages (even if they look like disadvantages) of learning computer science without a computer

In addition, here’s what we’ve learned from our past experience working with incarcerated men and women:

  • incarcerated individuals have lots of time and perseverance
  • empower each learner’s creativity
  • start slow and assume as few things as possible
  • never underestimate the power of human will

The giant challenge is that all of the unplugged strategies discussed in this article assume that at some point, the learners will integrate their unplugged learning with traditional plugged in methods.

Tim Bell, when reviewing this article, noted, “Just to clarify — the evidence is that we should start with unplugged, but moving to actually programming a computer is also important.” His dry, slightly cheeky New Zealand humor is pronounced. Yes, at some point, we need to move on to actually programming a computer. Is that still true, though, when you’re in prison? We’re going to figure that out.

We’re looking for brave, forward looking and optimistic contributors and partners who are willing to take on a big challenge for a big opportunity. If you’re interested in helping out or joining forces or just want to keep an idea on our progress, hook up with us on our website and our Twitter. We’re excited to partner with Jesse Mostipak on creating these guides, so keep an eye on her Twitter as well. We’re really thrilled to make progress towards these unexplored opportunities.

References

[1, 2] R. Unnikrishnan, N. Amrita, Alexander Muir, and Bhavani Rao. 2016. Of Elephants and Nested Loops: How to Introduce Computing to Youth in Rural India. In Proceedings of the The 15th International Conference on Interaction Design and Children (IDC ’16). Association for Computing Machinery, New York, NY, USA, 137–146.

[3] Felienne Hermans and Efthimia Aivaloglou. 2017. To Scratch or not to Scratch? A controlled experiment comparing plugged first and unplugged first programming lessons. In Proceedings of the 12th Workshop on Primary and Secondary Computing Education (WiPSCE ’17). Association for Computing Machinery, New York, NY, USA, 49–56.

--

--

Managing Director @ Level — a new nonprofit that creates and mass distributes free educational material for people in prison. More at learnlevel.org