Designing a computer ethics course from scratch

Designing a Computer Ethics course - The Devil is in the detailsI’ve always enjoyed teaching computer ethics to engineers, partly because it’s such a challenge to make the material inspiring and relevant. Part of this challenge came from the textbooks I’ve used in the past. Although many of them are well-written, balanced and gives a good introduction to computer ethics as a field (I still think Tavani’s is the best out there), I often find them lacking when it comes to “why should I learn this?”- and some of them spend too much time explaining technicalities when the computer science students already know all about this (CS students, especially graduate students, don’t need an explanation of worms, data mining or encryption techniques – they will know this better than both the authors and the lecturer). With this in mind, I decided to design my computer ethics course from scratch, using only the ‘creme de la creme’ of papers and chapters, from the best journals and anthologies. Although I was looking for that certain je ne sais quoi, my more tangible criteria were:

  • The text should be inspiring and introduce a new way of thinking about things
  • In addition to introducing a new way of thinking, it should ideally introduce other approaches as well.
  • It should (again, somehow) show why certain ethical considerations are important (answering questions of the sort “why should I care about privacy”)
  • It should be an exemplary piece of philosophy, clearly using arguments, examples and conceptualizations that are helpful when considering ethical problems in general.
  • It should be relevant to their future occupation as software engineers, and it should not introduce technical details that would be part of any computer science 101.

I thought this was going to be a difficult chore, but didn’t quite anticipate how difficult it was going to be. The problem is that the majority of literature in computer ethics is directed towards other computer ethicists, are incredibly boring, labour over points that are self-evident or unimportant, are irrelvant to the actual practive of software engineering (“why should we learn this?”) – or just being poor (let’s face it, there’s a lot of crap being published in computer ethics). However, after months and months of reading a lot of different papers, I ended up with the following list that constituted the backbone of my course.


  • Bynum, Terrell, “Computer and Information Ethics“, The Stanford Encyclopedia of Philosophy (Winter 2008 Edition), Edward N. Zalta (ed.) (introduces all the most fundamental topics in computer ethics in an accessible and concise manner. This made it possible to launch into discussions in class without having spent numerous classed on the basics)

Ethical Theory and critical reasoning:

  • Martin, C. (2010): “A Brief introduction to Morality”. In G. Reynolds, Ethics in Information Technology, 3rd edition, pp. 373-387 (perhaps the strangest choice was this very concise introduction to ethical theory. Although short and somewhat superficial at times, it introduces the most essential aspects of the major ethical theories in a way that is clear while at the same time true to their nature. I’ve always found the portrayal of Kantian ethics missing in many of these introductions, but Martin does a good job with this as well. The textbook from which this appendix (!) is taken was one of the worst textbooks I considered, since it made the error of introducing all the technical aspects of the ethical problems, which – as mentioned – the computer science students don’t really need)
  • Tavani, H. (2007): “Critical thinking skills and logical arguments: Tools for evaluating cyberethics issues”. In H. Tavani “Ethics & Technology”, pp, 71-93. Hoboken, NJ: Wiley & Sons. (I used Tavani’s book in the past and this was always one of my favorite chapters – an essential and concise toolbox for reasoning about ethical problems)

Professional ethics and responsibility:

  • Davis, M. (1996). Some paradoxes of whistleblowing. Business and Professional Ethics Journal, 15:3-20 (good and concise treatment, that highlights both the importance and difficulties in whistle-blowing. This was complemented by concrete laws in the lecture on legal aspects)
  • Coleman, Kari Gwen, “Computing and Moral Responsibility“, The Stanford Encyclopedia of Philosophy (Spring 2010 Edition), Edward N. Zalta (ed.). (This is the best introduction to professional responsibility I could find, but I’m still looking for something even better. Some of Gotterbarn’s papers might take this place).
  • Software Engineering Code of Ethics and Professional Practice (Version 5.2) (this is more or less required in any computer ethics course. Students could bring this to the exam for reference. I recommend a critical approach to this code, as it is very general and vague at points, so not something that should simply be rehearsed and repeated)


  • Floridi, L. (2005). The ontological interpretation of informational privacy. Ethics and Information Technology, 7:185–200 (fulfils my criteria perfectly, as it both introduces traditional approaches and presents a new one – that is both thought-provoking and useful).
  • Introna, L. (1999). Privacy and the Computer: Why We Need Privacy in the Information Society. Metaphilosophy 28(3):259 – 275 (only pages 265-274 were required reading. This was included in an attempt to show why privacy concerns are such a big deal – one of the most recurring questions from the students).
  • Tavani, H. (1999). “Informational privacy, data mining, and the Internet”. Ethics and Information Technology 1: 137–145. (concise and clear introduction that also introduces some of the more peculiar problems related to data mining and other specific forms of information gathering).


  • This was a guest lecture by an expert on IT legislation. I’ve found that the students always appreciate a “breather” with concrete rights and obligations, so I strongly recommend finding a good guest lecturer for this if you’re not an expert in legal issues yourself. A number of legal directives (primarily from EU) were included as literature, but the students were allowed to bring these to the exam (i.e. they were used for reference rather than mandatory reading).

Freedom of expression and Intellectual property:

  • Lessig, L. (2002). The architecture of Innovation. 51 Duke L. J. 1783 (Inspiring and introduces a number of important concepts and distinctions that are immensely helpful for discussing problems in intellectual property and regulations. I also showed Lessig’s TED talk, and used it as a background for discussion in class).
  • Søraker, Johnny Hartz(2008) ‘Global Freedom of Expression Within Nontextual Frameworks’, The Information Society, 24: 1, 40 — 46 (I know, I’m not saying that my own paper measures up to my criteria above, but it does introduce some of the most fundamental problems with freedom of expression online, a few distinctions I’ve found helpful, as well as a suggestion that works well as starting point for discussion).

Value-Sensitive Design
(I recommended Sicart for this topic/class, but it was given by Philip Brey who also chose the other texts)

  • Brey, P. (2009). ‘Values in Design and Disclosive Computer Ethics,’ A Philosophical Introduction to Computer Ethics, Ed. L. Floridi, Cambridge: Cambridge University Press (concrete and concise introduction to one of the distinct approaches in computer ethics)
  • Batya Friedman, Peter H. Kahn, Jr., And Alan Borning (2006): Value Sensitive Design and Information Systems. In P. Zhang & D. Galletta (Eds.), Human-Computer Interaction and Management Information Systems: Foundations. M.E. Sharpe, Inc: NY (a fairly standard introduction).
  • Sicart, M. (2010). “Values Between Systems: Designing Ethical Gameplay”. In Schrier, Karen and David Gibson (eds.), Ethics and Game Design: Teaching Values Through Play. IGI Publishing (interesting on its own, but also introduces an interesting way of thinking about the relationship between different layers, or levels of abstraction, in software – and how these are relevant to ethical considerations).

Designing for Well-being:
(this is a more special twist related to my own research, and not a topic that is required in a computer ethics class).

  • “The new science of happiness”. TIME Magazine, Jan 17, 2005 (a little superficial, but still a decent and, most importantly, concise introduction to some important findings in positive psychology)
  • Benjamin B. Bederson (2004). “Interfaces for Staying in the Flow”. Ubiquity, Volume 5, Issue 27 (a concrete example for how to apply findings from positive psychology – Csikszentmihalyi’s notion of flow, in particular).

As for assesment, I gave the students one assignment (answerable in groups from 1-4) where they were given a scenario where there were a lot of ethical pitfalls. Here’s one example:

You’re working for a company that has gotten a contract for creating a software tool for simulating demolition of large buildings. In this program, it must be possible to model (visualize) different kinds of buildings, and simulate how different strategies for placing explosives etc. will determine how the building is demolished. The tool must also be available on the Internet to allow multiple workers to work on different aspects of a project simultaneously. The purpose of the program is to enable demolition workers to increase the safety and accuracy of demolitions. You have been designated as project leader, in charge of overseeing all aspects of the development process.

Needless to say, a number of problems – some of them with potentially catastrophic consequences – could occur with such a program. Some examples of sources of error:

  • the program gives incorrect information for certain variables,
  • the program can give misleading information due to ambiguous user interface,
  • the program can give false results because of poor support and training for the users,
  • the program could give false information due to outdated variables (e.g. if a new type of explosives comes on the market),
  • problems might arise because users enter information individually and are not aware of changes or additions made by another user,
  • terrorists hack into the system and enter information that will cause a disaster,
  • there is simply a bug in the system (faulty algorithm)
  • Privacy concerns related to user logging
  • Etc etc etc ….

Part 1) What kinds of preparations will you initiate before you start the development of the program itself (delegation of work, finding necessary expertise and how to include these experts in the development process, etc.)

Part 2) Discuss in detail THREE different problems (choose from the above or come up with your own). For each of the problems, discuss
a) what is the cause of the problem,
b) how could this be avoided, and
c) who is legally and ethically responsible for the negative consequences and why.

Part 3) Just before deadline, you discover that the program gives very unrealistic results at particular wind strengths and confront the boss with this. The boss states, rightly, that the wind speeds in question rarely happen, and that there is a very small chance of a problem occurring. The boss further makes it very clear that it is impossible to delay the project to fix the problem. What do you do in this situation?

The student essays were generally very good, most of them clearly showing that they had benefitted from the papers in the course. In addition to the assignment, which counted for 60% of the total grade, there was also a written exam, which was more centred on concrete questions and smaller scenarios.

I was curious as to how the students would respond to the different papers, but I’m happy to say that the feedback and evaluations were overwhelmingly positive. I highly recommend putting together a reader in this manner rather than sticking with textbooks – especially when dealing with students with a solid background in computer science (i.e. no need to explain the tecnicalities involved) and who will actually become practitioners in the field (i.e. the course should be relevant to their future occupation). The only point of criticism was that it wasn’t intuitively clear how the last class on designing for well-being related to the actual practive of software engineering, which is the main hurdle to overcome for the next time I give the course.

I’m planning to improve this course further, and I would highly appreciate any feedback you might have – whether it be questions about the structure and/or literature choices, or anyting else that comes to mind.

[edit: I forgot to mention that the one topic sorely missing from this course relates to culture. I’m still having problems doing this in a manner that makes problems related to culture engaging and relevant for the students, as my main goal was to make the course as useful as possible for their future profession. Suggestions are very welcome]

One thought on “Designing a computer ethics course from scratch”

Leave a Reply

Your email address will not be published. Required fields are marked *