Be Yourself and Learn Computer Science

keyboard with two of the normally black keys appearing as yellow

What do you do for fun?  Knit or sew?  Watch movies?  Read?  Play sports or video games?  Play an instrument?  Listen to music?  Dance?  Spend time with family and friends?

Now, think back to the last time you thought about STEM: science, technology, engineering, or math.  Did it give you as much joy as your favorite activities?  Or did focusing on STEM decrease your joy, as often happens in traditional schooling?  Did you feel even more weighed down by stereotype threat?  It’s no surprise that many of us don’t enjoy learning technical subjects.

It’s also no secret that the tech industry and the field of computer science feel unwelcoming to individuals from groups traditionally underrepresented in the field (read: most of the human race).  Coupled with the generally unwelcoming feeling is a lack of individuals from these groups in computing careers, limiting the already-low supply of qualified candidates for tech jobs.  Furthermore, a lack of diversity and inclusion among technology developers is leading to the creation of products with serious technical flaws.

For years as a Ph.D. student and later as a software engineer, I looked for ways to improve diversity and inclusion in the computing world.  Now, as a faculty member of the Department of Computer Science at UT-Austin, I aim to do that, in part, by illustrating just how deeply many technical concepts are embedded into the seemingly nontechnical things many of us enjoy.  I hope that by taking things we feel connected to and connecting those things, in turn, to technical concepts, more of us can feel deeply connected to STEM rather than feel pushed away by how we experience it.  The following are examples of my attempts at painting a warmer picture of some computer science topics.  (I’d like to emphasize that while this post focuses on changing course materials to foster a welcoming environment, there are many other aspects to inclusiveness that this post won’t cover.)

With an awesome team assembled by TED-Ed, I scripted a YouTube video lesson explaining sorting algorithms, a key computer science topic.  Usually, TED-Ed matches the professional narrator’s gender with the author’s to respect the author’s own voice in the lesson.  I decided to go against that protocol and requested a non-male narrator for my lesson, citing the overwhelming majority of male voices in a field that has had the lowest percentage of female degree-earners across all STEM subjects.  A couple of men teased me about “sounding feminine.”  I took it as a compliment--it meant people were paying attention to the expert female voice in the narration.  The video currently has over 2 million views and was at one point the #11 trending video on YouTube.

Video lesson scripted by Chand John and created with TED-Ed to illustrate a computer science topic via an analogy to sorting library books.

I’ve also drawn over 50 comics with mostly non-male characters and expert voices illustrating several computer science concepts from searching and sorting algorithms to computer architecture to machine learning.  A number of students have said these comics are a positive addition to their learning experience.  One of these comics was featured on the back page of ACM Inroads, a computing education journal.

Excerpt from a comic entitled, “Computers Can Cook Data, but We Have to Write the Recipes,” by Chand John. Available at  https://www.cs-comics.com/

In my introductory computer fluency class, I created some lessons relating facts about popular celebrities to computer science concepts.  In one lesson, we studied algorithms for searching through the Forbes Celebrity 100 list and analyzed the most efficient ways of determining how a particular celebrity’s earnings (Beyoncé because, well, why wouldn’t you) rank relative to everyone else’s earnings.  In another lesson, we learned about combining loops and conditional statements in computer programs to analyze how Taylor Swift could best price tickets to her shows, based on what really happened when the musician, also a highly skilled businessperson, stopped her shows from selling out to increase her revenue.  We also discussed how computer programs implementing sorting algorithms could keep the WNBA standings board updated as teams win and lose games throughout the season.  (I also made it a point to refer to the WNBA and NBA as the women’s and men’s NBA, respectively, to reduce the prevalence of the idea that male is somehow the “default” gender.)  Students had very positive feedback about this course in end-of-semester surveys.

In an introductory computer programming class, I demonstrated a program in the Java language that plays the notes of the song “Let It Go” from the Disney movie Frozen.  (My program doesn’t sound quite like the original song; I figured out the notes on a piano without looking at any sheet music and then wrote a computer program that plays the notes.)  Students were itching to see this computer program that plays a song from a movie with strong female leads that defies the traditional Disney princess storyline, which was a refreshing counterbalance to the more stereotypically male-oriented interests that pervade the tech world.  My students broke into applause after seeing this application of almost all of the computing concepts we had covered throughout the semester.

I have created an online framework where students can command a computer program in the Python language to send notes to a Web page that will play those notes on a virtual piano.  Students looking for a challenge can go beyond that and edit other code for the Web page in the Python, JavaScript, and HTML languages to change the colors, sounds, structure, and behavior of the piano.  This tool is designed to inspire not only students who enjoy music or graphics, but also students looking for opportunities to go beyond the course material to experiment with Web development.

Screenshot from a Web page containing a virtual piano that plays notes specified by a computer program.

I have also created a software tool that allows students to write code in the Python language that animates a person performing various movements listed by the programmer, including running, dancing, and playing basketball.  The intention here is to expand the introductory programming experience beyond writing programs that print text to the screen to writing code that makes a cartoon character come alive.

Video of a software system for writing Python code to animate a character performing hundreds of possible movements including dancing, playing basketball, and climbing.

These are just a few of my experiments with improving the student experience in computer science classes.  I believe changing stereotypes of how computer science should look and feel is one way to increase inclusiveness.  Ultimately, I hope we can all work together using a variety of approaches to have students from all backgrounds not only participate in a subject, but also free it from a narrow canal built by a select few and lead it into an ocean of possibilities, creating a better future for all of us.

Chand John is an Assistant Professor of Instruction in the Department of Computer Science at UT-Austin.  He is also Affiliated Faculty with UT's Robotics Consortium, consults as a robotics software engineer, and is an advisor to Breaking the Glass, an organization focused on increasing diversity and inclusion in the tech industry.  He received his Ph.D. and M.S. in computer science from Stanford University and his B.S. degrees in mathematics and computer science (Dean's Honored Graduate) from UT-Austin.