One result of the student protests last semester is that faculty are having more deliberate discussions about diversity in the classroom. I am meeting semi-regularly with a group of faculty this semester – a “Faculty Learning Community”, or FLC – to talk about diversity in science classes. This has been a long standing issue, of course, with the physical sciences facing a particularly homogeneous student population, and computer science one of the worst disciplines among those. The goal of the FLC is to talk not only about recruitment, but also about other ways we can retain and support disciplinary minorities.
I have never thought about all the different ways diversity might be worked into the classroom. One topic we discussed in the last meeting is including stories and papers from researchers who are not cis-gendered white men. This may be harder for introductory computer science courses that following a single textbook, but I can see how talking about (for example) Lynn Conway could reject the standard stereotypes. Although this is valuable, the FLC faculty are also interested in including diversity in the content of the course. This is a lot harder, since it is difficult to find room for such “digressions” in a science course – how would racial and social diversity fit into an organic chemistry lecture?
I am lucky in that cognitive science is more amendable to such discussion. Our introductory course does talk about issues of researcher and subject bias (ie. how most psychology experiments are done on undergraduates at highly-ranked colleges) and also of stereotype threat. My own lectures mention how language could change our recollection of an event, which would lead to unconscious bias due to priming effects.
But I want to talk more about computer science. As a computer scientist, I am an odd duck at the FLC meetings. Introductory computer science courses focus on developing students’ computational thinking, which put little to no constraints on the specific examples that demonstrate the principles and abstractions. With the student protests on my mind, I semi-deliberately looked for non-mainstream examples this semester. Surprisingly, I found two without even trying particularly hard:
- In a homework about if-then statements, I originally wrote a question asking students to write a function to verify Biblical verses. The function would get a chapter and a verse number, then return true only if that verses exists (in the book of Genesis, say). Halfway through writing the question, I realized that there is no reason to use the Bible as the text. I could just as well use the Quran – except for the fact that I myself didn’t know whether the Quran even had chapters and verses!A quick scan of Wikipedia told me that they do in fact exist as surahs and ayat (singular: ayah), and I made sure to check my vocabulary with a student familiar with the Quran. The final homework question my students to look up the number of ayat on Wikipedia:
Complete the following function, which takes a surah and ayah number (roughly the equivalent of chapter and verse numbers) from Quran, and return
Trueif it’s a valid surah and ayah number, and
Falseif it is not. Although the Quran has 114 surahs, your program only needs to work for the first ten (ie. you may assume the
surahargument will be an integer between 1 and 10, inclusive). You may further assume that the
ayahargument will be an integer. A list of surahs and the number of ayat it contains can be found on Wikipedia (it’s the number outside the parentheses).
- The other example was also for if-then statements, this time from lecture. I was looking for a way to demonstrate how a function may not have a return value if students are not careful with their branches. (In C++, this is the “control reaches end of non-void function” warning; in Python, this introduces the special value
None.) I eventually settled on first presenting a seemingly-stereotyped function:
def background_color(gender): if gender == 'male': return 'blue' if gender == 'female': return 'red'
I then asked students what the following call would return:
I didn’t think of it at the time, but I could have asked students what would happen if the argument was a Boolean variable
is_maleinstead. I would then guide them to realize that non-binary gender identities would then be considered “female”, and that the opposite would be true if the variable was
In fact, I had originally envisioned the second example to be part of a larger theme in the course, on how the representation of data constrains/influences the algorithm. In the first lecture of the semester, I had talked about how Facebook used to only allow five relationship statuses: “single”, “in a relationship”, “married”, “divorced”, and “it’s complicated”. (I am not sure if this is true, but it’s a good story.) The point is that not all relationships fit neatly into these five categories, and a better representation would be to allow users to type in whatever they want (which I believe is Facebook’s current solution). A related lesson would be how the technology we create have unintended side-effects that may disadvantage particular populations. I didn’t have time to integrate such a theme this semester, but now I have more of the mechanics of the course down, I will try to incorporate it next time.
My point is that computer science classes have many opportunities to address and demonstrate diversity. Although recruitment of disciplinary minorities must occur first, I hope even these small examples will reduce the isolation that non-traditional students feel, and perhaps also open up additional conversation between faculty and students.