The harms of assuming cultural knowledge in coding assignments
I love using computers to re-create real world objects, like coding a simulation of a plant growing or making a 3d animation of a lava lamp. I can rarely capture the beautiful complexity of a non-digital object, but I sure can have a good time trying! So when I come up with assignments for programming courses, many of them ask learners to program a simplified version of some IRL object, game, or situation. My hope is that the programming assignment is more interesting to learners because of its connection with the world around them.
For example, in the Khan Academy Intro to JS course, one of the projects asks learners to create a Magic 8-Ball to practice their understanding of randomness and conditionals. I have fond memories of Magic 8-balls from my youth, asking them seemingly very important questions and shaking them to gain insight into the machinations of the universe.
But then I got feedback that many learners had no idea what a Magic 8-ball was, and that was affecting their ability to complete the project. That’s when it dawned on me: those toys were popular in my youth in upstate New York, but they never became popular in most non-US countries, and they’re not particularly popular these days even in the US.
So I was asking learners to re-create something they had never seen, and I wasn’t even explaining very well what it was! So I quickly modified the project to start off with a description of the toy and that reduced the number of confused help requests from learners.
Ideally, I would even replace the project with one that felt culturally relevant to more people. However, it is hard to come up with projects that are culturally relevant to everyone, since we all come from so many different cultures. In a course that serves a global audience, one approach is to always offer a variety of projects, allowing learners to work on the project that most appeals to them. The Hour of Code on Khan Academy ends with three different projects- creating a wild animal, a super snowman, or a self-portrait. When I analyzed the data a few years ago, I found that learners were roughly equally picking each of the projects, so I’ve left all the projects in instead of trying to force the most popular project on everyone.
Another risk of culturally dependent assignments is that they can cause a learner to question whether they belong. For example, I’m currently working my way through a programming course where the biggest project is a violent tower defense game. I do find it fun to make some kinds of games, but I hated working on that project as it reminded me of my least favorite use of coding and made me wonder if I was the only one that wasn’t into implementing death matches in code. Fortunately, I’ve been in coding long enough to know that indeed, programming is used for many non-violent applications as well.
But if that was my very first intro to programming, I would have many questions as to what industry I was entering and whether I would find folks with similar hobbies and values as me.
So when I create new assignments in the future, these are my goals:
- If I reference a particular cultural object, I will not assume the learner has prior experience with the object and will provide background knowledge. For example, if an assignment asks learners to implement a game of Poker, I would need to fully explain the rules of Poker. A programming assignment already requires the cognitive load of the programming techniques; it shouldn’t also require the cognitive load of understanding someone else’s culture.
- The assignments should reflect the varied cultures of the learners as much as possible. It follows from that goal that I need to learn about the cultures of the learners (as they may be increasingly different from me, as I get older) and that the assignments are subject to change over time (as cultures change).
- If an assignment relies heavily on a particular cultural interest, such as card games or Disney movies, there should be an alternate assignment available as well. If one set of learners gets to program something that’s highly interesting to them, then the remaining learners should have that opportunity as well.
Those are my current thoughts. I’d love to hear yours!