Ethics throughout a Computer Science curriculum

Every Computer Science student should get significant exposure to the social, political, legal, and ethical issues raised by the accelerating progress in the development and use of digital technologies.

The standard approach is to offer one undergraduate course, typically called Computers and Society or Computer Ethics.  I have done this during the current term at Columbia University, using my new textbook, Computers and Society: Modern Perspectives (OUP, 2019).  We meet twice a week for 75 minutes.  In class, I present key topics covered in the book, and welcome a number of guest speakers who present their own experiences and points of view.  Every class is interactive, as I try to get the students to express their own ideas.  There have been four assignments: a policy brief, a book report, a debate, and a research paper.  Such courses are typically not required by major research universities, which is a mistake, but they are often required by liberal arts colleges.

An imaginative approach, but one that is rarely used, is to introduce key issues by the reading and viewing of science fiction novels or stories or films.  This has been done at over a dozen universities (both those with significant research activities and those lacking them) and colleges in the U.S.  Both faculty and students find the material engaging and an effective vehicle for discussing ethical issues raised by computers, robots, and artificial intelligence software.

Recently, under the leadership of Computer Science Prof. Barbara Grosz, in collaboration with Philosophy Professor Alison Simmons, Harvard has been developing an exciting alternative called Embedded Ethics.  The web site asserts:

“Ethical reasoning is an essential skill for today’s computer scientists. The Embedded EthiCS distributed pedagogy embeds philosophers directly into computer science courses to teach students how to think through the ethical and social implications of their work”.

Each year, an increasing number of Harvard’s undergraduate CS courses have embedded into them one lecture per term discussing an ethical issue relevant to the course, such as data bias in a machine learning course, fake news in a networks course, and the need for accessible interfaces in a human-computer interaction course.  Material is presented by a philosophy teaching fellow or graduate student after consultation with the instructor.  A follow-up homework question or exercise is assigned to the students.  No particular ethical framework is stressed; an approach is chosen that seems best for each specific topic.  The program began in 2017; by 2019 14 courses had been equipped with the content to deliver one class dealing with ethics.  The goal is to equip all their courses within the next few years.

The results have been uniformly positive.  Students are engaged, with many “many expressing eagerness for more exposure to ethics content and more opportunities to develop skills in ethical reasoning and communication”.  A major strength of the program is that it keeps the importance of ethics at the forefront throughout the curriculum.

Prof. Grosz reports that a number of other universities are considering adopting the program.  Challenges that will be faced include identifying champions both in Computer Science and Philosophy, obtaining sufficient buy-in from faculty who are willing to devote one class per term to the activity, and the costs of developing the material for each local context.


What are the advantages and disadvantages of each of the three approaches discussed in this post?  One way of thinking about this is in terms of stakeholders, e.g., students interested in this material, students not interested, faculty believers, faculty disbelievers, the university, and the public at large.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s