Imagine a room full of families gathered together around laptops. They’re making animations and games using computer programming. Many of the children or their parents are pointing at or touching the screens as they discuss storylines and game mechanics. As is often the case with technology, the children appear to be taking the lead, guiding their parents. The young experts sometimes maneuver their parent’s hand on the mouse, showing them where to click or what to drag-and-drop on the screen.

However, this is no ordinary family-oriented coding workshop—the parents in these families are English Language Learning (ELL) adults. In other words, they have limited fluency with English. In fact, some of these adults do not understand English at all. In this room full of ELL families, people are all speaking different languages at the same time, like Afar, Somali, Amharic, Arabic, French, English, and Swahili. How does one teach introductory programming to such a diverse group of participants?

Research has shown that children’s academic endeavors benefit from parental support—whether it’s math homework, or computer programming. A survey in 2015 revealed that most Americans “view computer science as a basic skill”. Even if most children don’t end up coding for a living in their adult life, a basic understanding of computer programming (we will use the terms “programming” and “coding” interchangeably) will empower them to intelligently navigate our future world and make discerning choices in their daily lives.

Photo: Rahul Banerjee

Unfortunately, parents who aren’t “tech savvy” can find it difficult to locate resources for their children who are interested in learning to code. Such barriers are only compounded for immigrant families, where parents are commonly ELL. One bright spot for such folks are family-oriented computer programming workshops, like Ricarose Roque’s Family Creative Learning. FCL activities are structured so as to be accessible to novices of all ages. These workshops can work well for ELL families, as long as all families speak the same language. The reality is that community centers usually serve people from a geographic region. For instance, 49 different languages are represented in Seattle’s Rainier Valley. To require multiple instructors (or instructors who speak multiple non-English languages) would make such family-oriented programs infeasible to operate.

We decided to try a radically different approach. In ELL families, children are usually fluent in English (unlike their parents), and also fluent in their mother tongue (like their parents). We had already worked on a programming environment which used minimal amounts of text (in English). We decided to eliminate all text from this interface, then teach children how to use it (using English). This is quite the opposite of many programming environments, where the code is generally in English. Our plan was to have children teach their parents how to use the system, using their own shared language.

We partnered with three different community centers serving immigrant populations, and set up “family night” sessions, where ELL families could learn to code together. We provided childcare in an adjacent room for children ages 6 and below, allowing families with younger children to participate.

Eliminate Text: As discussed before, text in a coding environment can pose barriers for ELL families. In theory, one could translate every word in an interface into a different language. Doing this manually is pretty tedious for even a single language, while machine translation is currently not quite there yet. But there’s yet another issue in our “family night” scenario. Even if we had a magical way to quickly and accurately translate English code into multiple languages, how would one teach programming to ELL families who are speaking different languages together? In essence, we needed to create a whole new way of coding, one that did not rely on any given language. Thus, removing text and replacing it with a completely visual programming language is one way to overcome this barrier.

Avoid Abstraction: Abstraction basically means “take this complicated sequence of operations, and think of them as a single operation, to keep things simple”. For instance, when we click “Send” on an email, our mail program (whether it’s Gmail or Outlook), calls a function. That function itself is built as a sequence of operations, many of which are other functions (and so on), to send our email on its way. Operations performed by our “send email” function might include: checking that there is a valid email address in the “To” field, encoding attached files in a format that can be sent via email, etc. Functions let programmers write concise, intelligible, and easy-to-maintain code. However, a novice programmer does not start their journey by writing functions.

As an analogy, it is helpful to consider how the concept of a variable (x) is a foundational part of algebra and higher mathematics, yet nobody would suggest that students new to mathematics start with variables. We realized that for the children to explain to (and teach) their parents, our coding environment had to present a straightforward mental model of “how things work”. Adding abstraction to this scenario would impose a two-fold burden onto children. First, they would have to learn these concepts (what is a function?), and then convey these concepts to their parents (what is the Amharic word conveying the programmer’s notion of a “function”?). We decided that the best strategy was to avoid abstract concepts, and restrict this introductory programming experience to concrete notions, using colored shapes that can move, resize, collide, as well as appear and disappear.

BlockStudio embodies these two design principles. This video explains its interface.

A sample of games created by families in our “family night” sessions:

Maze: the objective is to move the face to get the stars.

Eat the dots: the objective is to move the triangle to eat green dots, but avoid the star.

Flappy bird clone: a simplified “Flappy Bird”, where one must avoid the green pipes.

We observed several interesting outcomes during these sessions. All participating families showed evidence of Joint Media Engagement, using the computer as a way to collaboratively discuss and implement their ideas. We saw physical displays of positive feelings (cheers, hugging, high fives, etc.) among family members, especially after successfully creating a game mechanic. Some creations were more complicated than others, using game mechanics that required multiple different pieces of logic. For instance, rules to move a character, working in tandem with rules for collisions, resulting in a “solve the maze while avoiding the traps” game. All families authored code with some interactive behavior.

These findings are important, because they show that we can bypass text when teaching introductory programming, thereby including populations that face challenges with English literacy (and text in general). As a broader goal, research into programming within underrepresented communities needs to consider such literacy barriers, and how their removal can help make programming a more inclusive activity.

To try out the BlockStudio system yourself, please visit its official home on the Internet: blockstud.io. You’ll need to sign up, but it’s free for everyone to use.

Rahul Banerjee is a Ph.D student in the Paul G. Allen School of Computer Science & Engineering, at the University of Washington, Seattle. He is exploring ways to make computer programming and its related tasks more inclusive.