Students Reflect on Programming Concepts

Professors Ray Essick and Elizabeth Edenberg lead a class discussion drawing meaningful ties between programming-specific meanings and ethical implications of key programming terminology.
 

In Georgetown’s Responsible CS team’s first engagement with Professor Ray Essick’s Advanced Programming course at Georgetown, students reflected on fundamental programming concepts through an ethical lens. As students start to master and deploy key concepts in the course, we designed a surfacing exercise to create an ethical framework that we will build on in two future engagements over the semester. Professor Elizabeth Edenberg, Senior Ethicist at Ethics Lab, co-led the session with Professor Essick.

Intersecting Contexts

Our goal in the first session was for students to draw meaningful ties between programming-specific meanings and ethical implications of six terms—“private,” “public,” “protected,” “hidden,” “promise,” and “trusted.” Because these are building blocks of the syllabus, developing ethical awareness at the ground level will help students work more nimbly and critically with those concepts now—and in their professional lives. Using scaffolded worksheets created by Ethics Lab, students brainstormed how those six concepts as defined in computer science intersect with their rich meanings in other contexts.  Students brought to bear a terrific set of examples ranging from physical security to copyright law, census data, non-disclosure agreements, and child-proofing of homes. In response to a student comment bridging issues of trust, transparency, and documentation, Professor Essick gave an example from the early days of Unix in which programmers wrote in the source code, “You are not expected to understand this.”  

Reimagining the Technical

Building on conceptual refinements arrived at through individual exercises and discussion, students turned to projects in small groups. We asked them to imagine how programming might look if the six concepts operated in technical terms more in line with normative expectations of the kind surfaced in our class discussion. Students presented a range of ideas, including reconsidering who should have access to “private” fields, how access and editing rights could be restricted, and how “protected” conditions might be adjusted. With this exercise, students began to reflect on the programming terms they will use on a regular basis in a new, ethically informed, and normative light.

Professor Essick concluded class by saying that programmers should scrutinize the ethical implications of their work at every stage of coding, from the ground up. In particular, “if ethics is an afterthought at the end of software development, we create a thin shell of responsibility around problematic design; only if we consider ethics as a core design specification can we have reliably ethical software.” Including ethics as part of computer science education from the start can help build these responsible habits in the next generation of computer scientists.

This project is funded by a Mozilla Responsible Computer Science Challenge grant and is part of the university’s Initiative on Tech & Society, which is training the next generation of leaders to understand technology’s complex impact on society and develop innovative solutions at the intersection of ethics, policy and governance.

Back to Mozilla Responsible Computer Science Grant