Teaching JavaScript for Social Justice

Can teaching JavaScript advance social justice? This spring I took an initial step to incorporate issues of culture, bias and equity into my JavaScript programming course. It’s a small step, and reflects my own growing understanding of these issues. Here I’ll describe why and what I did, and some of my initial experiences. I hope that you will share your thoughts, suggestions and resources.

Why did I do this?

Our students need to gain an understanding of  issues of culture, bias and equity at the same time that they learn technical skills. There are compelling ethical reasons, but even from a purely pragmatic perspective, information professionals need to understand the context in which we use programming skills. We don’t teach reference services, project management or cataloging isolated from their organizational and culture contexts, and we should similarly be teaching programming in its cultural context.

It is well established that women, people of color and other marginalized groups are underrepresented in programming and related fields. More to the point, they are systematically pushed out of and away from programming, starting at least as early as middle school, and continuing through high school, college and all the way to senior level positions. The obstacles they navigate range from individual bias and harassment (e.g., Gamergate) to structural (e.g., lack of computer science courses in lower-income schools). It is important for all of us to understand and work to dismantle these obstacles.

There is a lot of inspirational work being done already outside of academia – with initiatives like the Techies ProjectBlack Girls Code, All Star Code and PyLadies, as well as professional organizations like the Association for Computing Machinery (ACM) providing networking, support, mentoring, hackathons, conferences and more. Within academia, though, practical programming skills are generally separated from from social justice or ethical issues, often in separate departments or schools. Critical code studies, for example, interrogates code and and technological systems, but doesn’t teach programming. One exception is Dorothea Salo’s course, Code and Power, which integrates a substantial chunk of PHP programming within a larger framework that critiques “economic, social and cultural structural mechanisms related to racial and gender disparities in the computing industries.” (Check out the reading list – it’s a great resource.)

Changing what and how I teach

Introduction to Programming for the Information Professional is a graduate course at the University of Maryland’s iSchool. I augmented the existing learning objectives for concepts and skills of programming, adding a new objective (“Students will be able to explain how programming is situated in and reflects broader social structures, constructs and issues, e.g. race, class or gender”), four sets of readings and discussions and a final writing assignment. I introduced this in the syllabus and at our first class meeting, explaining that these are essential parts of the knowledge needed to be an information professional, and they go hand-in-hand with the technical programming skills.

It was important that I not only change what I was teaching, but also how – that I also provide an inclusive, welcoming and supportive environment for learning, especially for students new to programming, to counteract a lifetime of misinformation about the difficulty of programming and who can program. As students learn new ways of thinking (algorithmic and computational thinking) they often experience anxiety and feelings of inadequacy, coupled with isolation because they think, wrongly, that they alone “don’t get it.” (It’s really hard to convince them otherwise.) The National Center for Women in Technology provides suggestions to make our courses more inclusive (Top 10 Ways You Can Retain Students in Computing) which also happen to be good pedagogy for all students.

I dedicated time both before and during the course to reflect on how my own social identity (white, male, middle class, etc.) affects the assumptions I make about what, who and why I teach. Because my work is not separate from my identity, I reflected on my feelings in an anti-racism group that I co-facilitated at my church. I shared my disappointments when no-one had done the weekly readings or the discussion was shallow and my joys when I experienced a particularly insightful exchange.

Experiences and next steps

I was pleased that the discussions and final essays reflected a growing, albeit uneven, understanding of issues of culture, bias and equity. Comments often addressed aspects of diversity that I hadn’t initially considered. For example, multiple students commented about various types of gender challenges they observed with rural or conservative families, where there was a fairly “traditional” view of gender roles. I was pleasantly surprised while reading the final essays that several of the students who had been reticent during discussions wrote with insight. My own understanding of diversity and the challenges increased as I listened and read.

I collected anonymous feedback at several points. Student responses varied. About a quarter of the responses at the end of the semester still questioned the inclusion of this material. A smaller fraction commented positively that this was a valuable aspect of the course. I consider that a successful initial experience, with much more work to do. I am still learning how to create space for and facilitate meaningful conversations about culture, power, race, gender, etc. in the classroom, and how we all can reconcile the tensions between disclosure and emotional safety – how we can sit with the discomfort that these conversations require. I worry that I will make harmful mistakes or succumb to my own insecurities. Fortunately, I can draw on supportive communities and mentors. This is a work in progress.

I am looking ahead to teaching this again in the fall, incorporating the many thoughtful suggestions that I received. Some of the changes I am considering are:

  • Bring in a diverse set of outside speakers – Outside speakers can complement my own background and skills, and – whether they explicitly discuss social and cultural issues, or focus on technical issues – they can model the diversity of successful programming professionals.
  • Use in-class discussions instead of online – For this face-to-face class, we primarily use online discussions for short questions and clarification of assignments in between sessions. We generally get into deeper discussions in the classroom.
  • Conduct discussions in the second half of the semester – Rather than spreading discussions over the semester, it may be more effective to move them to the second half. This would allow us to first focus on the new concepts and the JavaScript language itself. In the second half, we could look more broadly and critically, perhaps in conjunction with the term projects, which are focused on the second half, too.
  • Continue to bring in current events – e.g. articles about Facebook’s Trending News

These are my initial steps. As I move forward I will continue to seek out ways to improve, to uncover my blind spots, to be accountable to my students, and to provide a supportive and challenging environment to learn the knowledge and skills needed to be a well-rounded, critically aware professional. I am eager to hear about similar work, so please share your thoughts and suggestions.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s