An Introduction to Software Engineering Ethics

Link to module

Evaluated December 2021

The module gives brief introductions to the standard ethical theories, and, importantly, gives students a basis for beginning to become ethical software engineers. The module leads students to consider what and who “the public” are. It also gives gentle suggestions on how to cultivate a stronger personal ethical practice. For many students, this should begin to change how they understand themselves, the world, and the relationship between themselves as professionals and the world.

It directly covers material in Software Development Fundamentals/Development Methods, Software Engineering/Software Project Management, Software Engineering/Requirements Engineering, and Software Engineering/Software Verification and Validation

This module might be used in an early course with programming to introduce students to their professional obligations as software developers. However, it is perhaps most effective situated in an upper-division software engineering course, ideally as an early activity that can be referred to regularly throughout the rest of the term of the course. The module is self-contained for both students and instructors and guides students through an introduction to a variety of ethical theories. There is a clear guide for instructors adopting the module and suggested strategies for using the module over one to three class periods, although it may be difficult to cover all the material in 150 minutes. Instructors may find a background in ethical theories helpful and collaborating with colleagues in the philosophy department may be helpful. However, this is a good module for instructors who are tentative about incorporating ethics and responsibility into their courses.

The module includes classroom discussion. Instructors not familiar with this mode of instruction may find it useful to seek out guidance from colleagues who are in their campus professional development center. An instructor adopting this module will have to develop rubrics for assessing student learning. There is guidance in the instructor’s notes: “given that many of the questions have no ‘right’ or ‘wrong’ answers as such, you may wish to credit them on a ‘check,’ ‘check plus’ or ‘check minus’ basis to reward complete and thoughtful responses, as opposed to rote or perfunctory ones.”  The professional development center on most campuses often can help develop more detailed rubrics.

Students may balk at the amount of reading, but it is worthwhile to assign all of it. The assignments are written responses and can be answered either shallowly or with a great deal of reflection. The students do not need any background in ethical theories, nor even in software engineering, though the latter might make these reflection questions more meaningful. The case studies are on topics that they are likely to find relevant: a parent paying for their child’s college; personal data being piped sub rosa to a commercial company that profits off it; programming work that supports a repressive regime.


The evaluation of this module was led by Marty J. Wolf and Judy Goldsmith as part of the Mozilla Foundation Responsible Computer Science Challenge. Patrick Anderson, Emanuelle Burton, Colleen Greer, Darakhshan Mir, Jaye Nias, and Evan Peck also made contributions. These works are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.