As someone who has picked up the Teaching Responsible Computing Playbook, you probably would agree that any discussion of societal contexts and ethical consequences in computer science curriculum is an advantage over no discussion. But how does one design a Responsible Computing curriculum that maximally supports students in the goal of practicing responsible computing and, moreover, serves as an extensible foundation that they can continue to develop as they learn and experience more about computing and the broader world?
In order to provide students with a basis for ongoing development and continuous learning, you need to give them structured ways of thinking about computing and society. This means presenting lessons that are not one-offs, but which build upon one another over the course of their training. It requires learning about, and giving students access to, ways of thinking from the fields that specifically concern themselves with "society" and "responsibility." These are large areas of study in the humanities and social sciences, but taking a structured approach, in partnership with experts from those fields, helps ensure that you and your students are able to to draw more big-picture lessons, make broader observations about patterns and dynamics among examples, and identify generalizable conclusions.
Structured ways of thinking aim to give students vocabulary with which to name the phenomena they are seeing. The vocabulary allows students to distinguish what is important and what forms a pattern in the examples so as to learn how to abstract from the specifics of the example, similar to how they would learn forms of abstraction in computer science. For example, learning a concept like "power," as it is discussed in Science, Technology and Society (STS) and Critical Race Theory, supports students in recognizing power dynamics and how they are reconfigured through new computing applications. Through using consistent vocabulary, students come to "see" issues differently. It is this gradual acquisition of a "way of seeing" and knowing what to "look for" that distinguishes structured ways of thinking from discrete or localized "exposure" to Responsible Computing topics.
One of the core benefits of a structured approach to Responsible Computing curriculum is that it prepares students to be resilient and build upon their foundational learning for years to come, as they experience and encounter new technical and social challenges in their life and work. Having developed a way of seeing, possessing a vocabulary for describing what they see, and having practiced applying them to a variety of examples, students can better discern continuities and ruptures between what they know and what they encounter next. They can read and interpret patterns, almost anticipating what will be important when another computing technology comes along. They will also readily identify something new and different when it doesn't fit the patterns and might require extra attention.
With these benefits of a structured approach, it may seem obviously preferred to more piecemeal lessons. However, developing this sort of pedagogical approach can be a long term process. At the same time, it can give you more chances to gradually expand your own learning as time permits. A structured approach requires grappling with different fields and working across disciplines with colleagues in order to design and teach the curriculum. It also does best with a coordinated approach among courses in a major or other pathways of study, because it typically goes beyond what can be realized in one class or a single semester. As such, a structured approach requires advance planning and coordination among faculty members in multiple departments. However, this long term planning is worth the effort since it would allow for you to have difficult conversations in your class from which students will reap continued rewards through their careers.
- What area(s) of structured learning should be drawn on? Examples include philosophy, Science and Technology Studies, or critical theories of race or gender. It’s OK to start with just one and pick it based on personal interest, background, or available colleagues.
- What resources do you need? Who can help? Do you need advice, reading lists, models, students who can assist you, contacts to faculty in another department? Do you have friends or acquaintances who can make a connection?
- What learning does the teaching team need to do? A conversation with a colleague in another field can make this step much easier. They can often give a syllabus or readings.
- How supportive is the department? Do you have allies, or can you gain support? Can you develop a proof of concept for your approach?
- Who is a good choice for a partner outside the department? Having a partner will make this work easier (better tips, more feedback, fewer dead-ends) and even more fun. Is there something you can offer them in return? If you are a computer scientist or data scientist, identify who at your university is a specialist in the interpretive social sciences and humanities who you can work with to define the structured curriculum that you will teach. If you are a social scientist or humanist, partner with a colleague in computing. Building a structured curriculum at the intersection of society and computing requires partnership across the disciplines in order to combine ways of thinking about the world that are characteristic of the disciplines.
- What are the student learning outcomes? What kind of critical thinking about society and computing do you want students to be able to have? What do you want them to be able to do differently (i.e. what bearing will this curriculum have on their practice? See the related section on learning outcomes and assessments.
- What are core concepts and perspectives that will allow the delivery of the learning outcomes? How does each concept/area identified in the first question correspond to a learning outcome? What disciplinary perspectives are essential to convey with each concept? You and your partner will need to do some reading and research to synthesize resources, readings, and examples from different disciplines to teach with.
- How will you map out your curriculum? Building structured ways of thinking require looking across courses and extracurricular programs that comprise a computing major. It requires an intentional layering and deepening of concepts, gradual exposure, multiple opportunities to see the same thing from different perspectives, and a coherent path through a course of study. Create a map of where and how each of the core concepts will be introduced to students during the course of their development through the major. How will students be able to practice the new perspectives and skills they're learning? Will they be able to synthesize everything in a capstone project or check-in on their progress along the way?
- How will you communicate with students? Once you've designed an integrated curriculum that is structured around a set of learning outcomes, disciplinary concepts and ways of thinking, and have created a map, share the map with your students. Publish the Responsible Computing map for the major on the department website, tell Advisors about it so that they know how to discuss it and its importance with students. If students know what to expect and what the curriculum is intended for them to learn, they can keep track of their progress.
☐ Identify areas of structured learning you plan to draw from.
☐ Identify resources that help you.
☐ Identify what learning you need to do on your own.
☐ Identify sources of departmental support.
☐ Find your partner(s).
☐ Write down what you want the students to know and be able to do by the end of the curriculum.
☐ Identify the core perspectives and concepts that will anchor your curriculum and allow you to deliver the learning outcomes.
☐ Map out the curriculum.
☐ Tell students what you're doing.
The UC Berkeley data science curriculum teaches structured ways of thinking with the help of the Human Contexts and Ethics Toolkit.
Checklist walk-through. We now give a quick walk-through of the check-list items to show how they were followed at Berkeley.
- Identify areas of structured learning you plan to draw from
- The toolkit contains a series of concepts from the fields of STS, history, and critical theory that are particularly salient for students to understand what's at stake socially in computing, data science, and society and that support students to reframe issues and identify opportunities for action.
- Find your partner(s)
- The tools were developed by a team of interpretive social scientists, and taught by social sciences faculty in courses dedicated to the human and social dimensions of data science and computing (Data 104, Data 4AC, EECS Anti-Racism and Social Justice course). They are also put in practice in primarily technical courses through a partnership with faculty from computing and statistics (e.g. Data 8, Data 100, Data 102) and in Discovery and extracurricular programs.
- Map out the curriculum
- By engaging the concepts multiple times and in different modalities throughout their years of training (e.g. having the chance to dive in on the social science theory, work through data science and coding projects in a Jupyter Notebooks, and apply the concept to their own data science and computing project), students build a robust understanding of data and computing in society.
- Tell students what you're doing
- We make sure to use consistent language around the Toolkit in each course that it is used so that students can identify it as a core and recurrent component of their learning. We also hired an undergraduate student to create illustrations for the concepts in the toolkit so that it could have a comprehensive visual look and brand.
Proactive CARE is a tool developed by ACM’s Committee on Professional Ethics for practicing computing professionals to engage colleagues regarding Responsible Computing for their projects. Bemidji State University is exploring using it as a basis for incorporating Responsible Computing into programming assignments in a variety of courses, from the first year to the fourth year. By regularly revisiting the same Proactive CARE document on numerous assignments in different classes, including final projects in most classes, students come to understand that analysis of the context and the social and ethical impacts of a software project and taking steps to mitigate harmful impacts are a necessary part of every software project.
Checklist walk-through. Since the use of Proactive CARE is under exploration, the checklist walk-through is more general and presented so that anyone pursuing its adoption might do a checklist walk-through.
- Identify areas of structured learning you plan to draw from.
- As a collaborative exercise, it is essential to be comfortable with the notion that you will have to draw on colleagues who better understand social structures and human psychology. While these colleagues can come from anywhere, drawing on-campus colleagues increases the chances that you will identify ways to address local issues that are closer and more significant to your students.
- Identify what learning you need to do on your own.
- Proactive CARE is a set of questions to engage in throughout each software project. You may find that you need to learn more about areas outside of computing in order to address the questions. You may find that you need to learn more about how to get students or developer teams to engage with these sorts of questions. Finding tools to facilitate discussion is important.
- Identify sources of departmental support.
- Many universities and funding agencies have initiatives that support collaborative initiatives. Some funding agencies look for “broader impacts.” Intentionally using collaboration in order to fundamentally change how your students come to understand the process of software development can be significant leverage when looking for outside support.
- Write down what you want the students to know and be able to do by the end of the curriculum.
- In earlier courses, students will be beginning to learn how to incorporate social and ethical analysis into their work and the context of the programming assignments are typically much narrower than in later assignments. Since the goal is long-term mastery, the expectations for first projects should be much lower. In capstone projects in the third and fourth year, expect students to demonstrate mastery.
- Map out the curriculum.
- Each course in the curriculum is evaluated to determine which programming assignments support the integration of Proactive CARE
- Tell students what you're doing.
- Many students find exercises that include social and ethical significance much more compelling. Make sure that they know that their contributions to this part of the project are valued and that over the course of the three or four years they are with you, that they will refine these skills.
- UC Berkeley’s HCE toolkit
- Don Gotterbarn and Marty J. Wolf, Leveraging the ACM Code Of Ethics Against Ethical Snake Oil and Dodgy Development.
Margo Boenig-Liptsin (author)
Marty J. Wolf