Ethical Reflection Modules for CS 1
While standalone ethics courses are increasingly common in computer science, I found that there are a lack of resources for integrating practice-based (coding!) reflection directly into CS 1 or 2 courses. This space acts as a repository of ethical reflection modules that I have created over the past couple of years. The goal of these modules is to:
- Introduce ethical reflection in CS 1 courses
- Develop ethical reflection habits alongside coding (all modules involve programming!)
- Pair directly with existing CS 1 curriculum (students practice for loops - but instead of practicing on trivial problems, their practice is situated in ethical design scenarios)
By reducing the barrier to adoption, my hope is that ethical reflection can be implemented more broadly in CS curriculum as a critical habit. Please read the FAQ for more information.
(News) Fall 2019: An ethically realigned CS 1
In Fall 2019, Bucknell University is running a redesigned CS 1 in which all core technical topics contain an ethical component. To follow along, please visit the page where I will publicly share some of our content.
Hiring Algorithms: Developers as Decision-Makers
What does it mean to design a fair algorithm? What is the human cost of efficiency? What systemic advantages/disadvantages are your algorithms likely to amplify?
- Scenario: Develop an algorithm that filters job applications based on GPA
- Material
- Practice: loops, conditionals, python lists
- Writeup: Ethical Design in CS 1: Building Hiring Algorithms in 1 Hour (Evan Peck)
- Author: Evan Peck (Bucknell University)
Input Validation: Developers as Gatekeepers
What assumptions do we make about the people using our technology? What are the consequences of those assumptions? - who might we exclude? How do we capture diversity through design?
- Scenario: Collect and validate personal information of people visiting a university
- Material
- Practice: conditionals, functions, data types
- Author: Justin Li (Occidental College), Adapted by Evan Peck (Bucknell University)
Ethical Engine 1: Developers as Definers of Identity
How can we adequately represent people in code? What characteristics of people should we NOT include in code? What are the implications of our representation decisions?
- Scenario: In code, represent a person so that autonomous cars can make life-critical decisions
- Material
- Practice: OOP design, data types
- Author: Evan Peck (Bucknell University)
Ethical Engine 2: Developers as Moral Arbiters
What is ‘moral’ behavior in the context of a computer? How do we write code that is forced to assign value to people?
- Scenario: Program a disaster-relief robot to prioritize which distressed people to saves
- Material
- Practice: conditionals, use of APIs and objects, dictionaries (in optional last part)
- Write ups:
- Author: Evan Peck (Bucknell University), parts of activity by Vinesh Kannan (Mimir HQ)
In Progress…
- Module on data privacy and data ethics
- Module on algorithm auditing (related to ethical engine)
License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License