7 Ethics & Do No Harm

CONTENT

  • Ethics And The Principles Of “Do No Harm”
  • Ethics Begins Before The First Line Of Code
  • Ethics In Practice
  • Ethical Design In CIS3750

Ethics And The Principle Of “Do No Harm”

One of the most common motivations for studying computer science is the desire to build things that improve people’s lives.

We create software to solve problems, make tasks easier, connect communities, improve health outcomes, support organizations, and help people achieve their goals.

Yet even when our intentions are good, the systems we design can have unintended consequences.

As software designers, we have a responsibility to think beyond functionality and ask a broader question:

What impact might this system have on individuals, communities, and society?

Good software does more than work correctly. It is designed thoughtfully, responsibly, and with an awareness of the potential consequences of design decisions.

Throughout this course, we will return to a simple guiding principle:

Design solutions that do no harm.

While it may not always be possible to eliminate every risk, it is our responsibility to identify potential harms, minimize those risks, and make informed decisions throughout the design process.

Ethics Begins Before The First Line of Code

Ethical considerations should not be treated as something that happens after a system has been built.

They should not be a final checklist completed just before release.

Instead, ethical thinking should be integrated into every stage of software design, including:

  • Understanding the problem
  • Gathering requirements
  • Designing solutions
  • Developing prototypes
  • Testing systems
  • Deploying software
  • Maintaining and improving systems

The questions we ask during the early stages of a project often shape the quality and impact of the final product.

For this reason, ethical software design begins long before implementation.

Questions Worth Asking

When working on a project, consider the following questions:

Understanding The Problem

  • Whose knowledge is informing our understanding of the problem?
  • Are we hearing from all relevant users?
  • Are there perspectives that have been overlooked?
  • Are we genuinely solving a problem, or are we trying to justify a solution that already exists?

Environmental Responsibility

  • Does our solution require significant computational resources?
  • What environmental costs might result from storing, processing, or transmitting data?
  • Is there a simpler solution that would achieve the same outcome?

Inclusion And Accessibility

  • Who benefits from this system?
  • Who might be excluded?
  • Have we considered users with different abilities, backgrounds, experiences, and needs?
  • Does our design support accessibility and inclusion?

Privacy And Data Use

  • Are we collecting only the information that is necessary?
  • How will user data be stored, protected, and used?
  • Could the information we collect place users at risk?
  • Could our system infer sensitive information that users did not intend to share?

Fairness And Bias

  • Could our design reinforce existing inequalities?
  • Are there groups that may be disadvantaged by our decisions?
  • Does the data informing our design contain hidden biases?
  • Have we critically examined the assumptions built into our system?

Safety And Harm

  • What happens if the system fails?
  • Could a malfunction cause physical, financial, emotional, or social harm?
  • Does the software encourage or enable harmful behaviours?
  • Are there legal or professional obligations that must be met?

These questions rarely have simple answers. However, asking them helps us become more thoughtful and responsible designers.

Ethics In Practice

Ethical challenges in software design are not theoretical.

Throughout the history of computing, there have been many examples where seemingly reasonable design decisions led to unintended consequences.

The following examples illustrate why ethical thinking matters.

Example 1: Lyme Disease And Public Health

Several years ago, students in CIS3750 worked with Wellington-Dufferin-Guelph Public Health on a project related to Lyme disease awareness and prevention.

The proposed system allowed users to:

  • Learn about ticks and tick bites
  • Submit georeferenced photos of ticks
  • Submit photos of potential tick bites
  • Receive guidance regarding possible next steps

One of the educational features involved displaying examples of the characteristic “bull’s-eye” rash associated with Lyme disease.

To find suitable examples, students searched online for images of tick bites.

The results appeared useful at first glance. Numerous examples showed the rash clearly.

However, a closer examination revealed an important issue.

Most of the images depicted individuals with lighter skin tones. Images showing the same symptoms on people with darker skin tones were far less common and much more difficult to find.

Why Is This Important?

If software designers rely exclusively on these search results, they may unintentionally design educational materials that fail to represent a significant portion of the population.

This can have real consequences.

Users may struggle to recognize symptoms on their own skin. Public health organizations may receive fewer reports from underrepresented communities. Important data used for disease surveillance and prevention may become incomplete.

The problem was not caused by malicious intent.

It emerged because assumptions embedded within available information were not questioned.

Ethical design requires us to recognize these blind spots and actively seek more inclusive sources of knowledge.

Example 2: Strava’s Global Heatmap

In 2018, the fitness application Strava released a global heatmap that visualized aggregated GPS activity from millions of users.

The goal was simple: show popular running, cycling, and fitness routes around the world.

The heatmap was visually impressive and appeared harmless.

However, researchers soon discovered that activity patterns in remote locations revealed the presence and movement of military personnel stationed at sensitive facilities.

In some cases, it became possible to identify:

  • Military base locations
  • Patrol routes
  • Base perimeters
  • Frequently used pathways

Why Is This Important?

The designers intended to showcase user activity.

They did not intend to expose sensitive military information.

Yet the combination of publicly available data and user behaviour created consequences that were not fully anticipated.

This example highlights an important lesson:

A feature can function exactly as intended while still producing harmful outcomes.

Ethical software design requires us to think beyond the immediate purpose of a feature and consider how information might be combined, interpreted, or misused.

Example 3: The Therac-25 Radiation Therapy Machine

The Therac-25 was a computer-controlled radiation therapy machine used to treat cancer patients.

A series of software design and implementation failures resulted in several patients receiving massive overdoses of radiation.

The system contained flaws related to concurrency, error handling, and operator feedback. Under certain circumstances, commands could be processed in an unsafe order, leading to catastrophic outcomes.

Compounding the problem, the system provided limited feedback to operators, making it difficult to recognize that an error had occurred.

Why Is This Important?

At least six patients received radiation overdoses, and several deaths were linked to the failures.

The Therac-25 case remains one of the most widely discussed examples in software engineering ethics because it demonstrates that software can directly affect human safety.

In some contexts, software failures are inconvenient.

In others, they can be life-altering.

As software becomes increasingly integrated into healthcare, transportation, finance, public infrastructure, and government services, the importance of responsible design continues to grow.

Ethical Design In CIS3750

You are unlikely to encounter a project in this course where lives depend directly on your software.

However, every project you work on will affect real people.

Community organizations invest time and trust in the teams they work with. Users depend on technology to accomplish important tasks. Design decisions influence who benefits from a system and who may be unintentionally excluded.

For this reason, ethical thinking is not a separate activity from software design.

It is part of software design.

As you move through this course, continually ask yourself:

  • Who benefits from this design?
  • Who might be harmed?
  • What assumptions am I making?
  • What information am I missing?
  • How can I make this solution more inclusive, responsible, and useful?

The goal is not to create perfect software.

The goal is to develop the habit of thoughtful, reflective design—an approach that recognizes that every technical decision also has human consequences.

License

Software Design: Planning Purposeful Solutions Together - A Community-Engaged Approach Copyright © 2026 by Daniel Gillis; Nicolas Durish; and Alessandro Arezza. All Rights Reserved.