Course: CS 61: Systems Programming and Machine Organization
Course Level: Upper-level undergraduate
Course Description: “CS 61 is a first course in computer systems programming, meaning the creation of high-performance programs that use computer hardware effectively. Although many programs today are written in high-level programming languages—and many programs simply glue together existing components—the best programmers are craftspeople who understand their tools. For software builders, this requires a working knowledge of computer internal organization. It means understanding how machines interpret instructions, how compilers turn programming languages into instructions, and how operating systems combine programs and libraries to create running code. And it requires understanding the factors that affect code performance.
CS 61 introduces you the tools you need to build robust, efficient software and the mental tools you need to understand software systems written by others. We hope you'll discover that systems software development is fun and worth the effort. We intend the course to be broadly accessible, though it will be easier for those who have some experience with systems programming in C++ or other C-like languages. (Course description )"
Module Topic: ASCII, Unicode, and the Ethics of Natural Language Representation
Module Author: Cat Wade
Semesters Taught: Fall 2018
Module Overview: In this module, we consider the ethics of natural language representation in modern software systems. Software systems play an increasingly central role in how we communicate with one another, and the computer scientists who design these systems are sometimes faced with difficult choices about what representational resources they should make available to their users. To what extent, for instance, should social media platforms support the vast array of languages used throughout the world? To what extent should the developers of smartphone operating systems provide their users with emoji reflecting the diverse identities and communicative needs of members of minority groups?
This module is co-taught by the professor for the course and the Embedded EthiCS TA. After an introduction to the ethical issues considered in the module from the TA, the professor gives a brief presentation on the technical dimensions of the module’s core case study: the shift from ASCII to Unicode, and the associated choices developers made about which languages to support. The TA then leads a discussion of the effects these choices had on members of different linguistic communities, and why those effects matter from an ethical perspective. Finally, students consider various strategies the developers of Unicode might adopt in order to better address the needs of minority communities, consistent with other needs the system is designed to satisfy and relevant technical constraints.
Connection to Course Technical Material: This module occurs during the course’s first unit on data representation and storage. The professor’s presentation during the module expands on the technical material already covered in this unit, considering how it applies to the module’s central case study: the shift from ASCII to Unicode. This sets the TA up to lead a discussion of how the technical issues discussed by the professor interact with broader social and ethical concerns.
We have found that it is important to build modules around real-world case studies that both connect strongly to technical material discussed in the course and raise ethical issues that students can readily appreciate. The shift from ASCII to Unicode has both features. Further, Unicode is the standard for encoding emojis, which provide a particularly intuitive and relatable way to illustrate the module’s core philosophical concepts (see the sample class activity below).
© 2018 by Cat Wade, "ASCII, Unicode, and the Ethics of Natural Language Representation" is made available under a Creative Commons Attribution 4.0 International license (CC BY 4.0).
Key Philosophical Questions:
Key Philosophical Concepts:
Sample Class Activity: After being introduced to the concept of representational harm, students are presented with a slide containing the current set of ‘yellow’ emoji representing families of different kinds. In small groups, students discuss what kinds of families are left out from the current set, and whether those omissions constitute representational harms.