Integrating Ethics into a Computing Curriculum: A Case Study of the Therac-25: A paper on teaching ethics of real-time systems
This is a paper on teaching the Therac-25 case with particular reference to understanding the race conditions that underlie some of the errors. We contend that, given the poor understanding of race conditions in the 1970s, it is anachronistic to blame AECL programmers for not handling these with correct syncronization techniques. This does not absolve AECL of blame for many other system safety errors, but it places the case in its historical context.
Almost all computer ethics courses use cases to some extent. We show how we have integrated detailed historical cases into ethical reflection throughout the computer science major, and in particular in the course Ethical Issues in Software Design. We then present a particular case, that of a radiation therapy machine in the mid 1980s that killed several people with massive overdoses of radiation. The overdoses were caused by poor software design. To understand the failings of the software design process we present significant technical and social detail of this case and show how this detail helped to make the case effective in teaching ethical issues.
- Chuck Huff is Professor of Psychology at St. Olaf College. He has published research in the areas of moral reasoning, computing and education, gender and computing, social aspects of electronic interaction, and ethics in computing. He recently returned from sabbatical doing empirical research on the moral development of computer professionals in collaboration with the Centre for Computing and Social Responsibility at Demontfort University in Leicester, UK.
- Richard Brown is Associate Professor and Director of Computer Science at St. Olaf College. He recently designed the college's computer science major in a way that integrates ethical issues throughout the curriculum. He is writing an introductory textbook, Principles of Computer Science, that emphasizes recurring concepts in computing and is structured around three programming paradigms: functional, imperative, and object-oriented.
- A chapter in Atsushi Akera & William Aspray (2004). Using history to teach computer science and related disciplines. (pp. 255-278). Washington DC: Computing Research Association.