ACM Code Activity Overview

Students will be divided into five teams, with each team assigned one ethical case study related to software engineering. In this activity, students will analyze potential ethical violations in software and system design using the ACM Code of Ethics as a framework.

Phase 1: Independent Exploration

Begin by independently identifying and analyzing possible ethical violations related to software development, computing systems, and professional conduct.

  1. Analyze the case, discussing key ethical concerns.
  2. Identify specific principles from the ACM Code of Ethics that are violated or upheld. Cite the specifc items involved, like 2.3 or 5.6.
  3. Answer questions to explore the implications and possible resolutions.

Phase 2: AI-Assisted Analysis and Refinement

After completing your initial exploration, teams will use AI tools to further investigate potential ACM Code violations. They will:

  1. Explore additional violations – Use AI to suggest other possible ethical dilemmas and real-world examples they may not have considered.
  2. Analyze ethical perspectives – Use AI to compare different ethical viewpoints and interpretations of the ACM Code.
  3. Refine their analysis – Based on AI-generated insights, students will update their initial findings, addressing gaps, strengthening arguments, and considering new angles.

Presentation

Each team will present their findings:

  • An overview of the case
  • Their initial independent analysis.
  • AI-generated insights and how they influenced their perspective.
  • A refined analysis incorporating new ethical considerations.

Case 1: AI Bias in Hiring Software

“The Unintended Discrimination”

Scenario:

Lisa is a senior software engineer at TalentMatch, a startup developing an AI-powered hiring tool for major corporations. The AI is designed to analyze resumes and suggest the best candidates based on past hiring trends.

One day, Daniel, a data scientist on Lisa’s team, discovers an issue: the AI favors male candidates over female candidates for technical positions. After further analysis, he realizes that the training data was based on past hiring decisions, which historically included gender bias.

Daniel raises his concerns in a meeting. However, Mark, the project manager, argues that changing the algorithm would require retraining the entire model, which would delay the product launch. He insists that the system is “just reflecting reality” and that fixing the bias is not their responsibility.

Lisa is torn. She knows that ignoring the bias could perpetuate discrimination in hiring, but she also faces pressure from management to meet deadlines and keep investors happy.

Discussion Questions:

  1. What ethical obligations do Lisa and Daniel have in this situation?
  2. Is Mark justified in prioritizing business deadlines over fixing bias?
  3. What would be the right course of action for the company?
  4. If the biased AI is deployed, who is responsible for the discrimination—the engineers, the company, or the AI itself?

Case 2: Using Copyrighted Code in Open-Source Software

“The Accidental Infringement”

Scenario:

Carlos is an enthusiastic developer working on OpenFinance, an open-source project aimed at helping small businesses manage their budgets. While developing a new feature, he remembers writing similar code at his previous job at BankTech Inc., a financial software company.

Without thinking much of it, Carlos reuses portions of that code in OpenFinance. He modifies it slightly but doesn’t credit BankTech because he wrote it himself.

Months later, OpenFinance gains popularity, and a BankTech legal team member notices the similarities between the two projects. Carlos’s former employer sends a cease-and-desist letter demanding that OpenFinance remove the copied code or face legal action.

The open-source community is outraged. Some contributors believe Carlos acted unethically, while others argue that if he wrote the code originally, he should be allowed to reuse it.

Carlos is now under pressure to explain his actions. If he removes the code, it might severely impact OpenFinance—but if he doesn’t, the entire project could be shut down.

Discussion Questions:

  1. Did Carlos violate ethical or legal principles by reusing code he originally wrote?
  2. Should developers be allowed to reuse code they wrote at a previous job?
  3. If Carlos genuinely forgot where the code came from, should he still be held responsible?
  4. How can open-source developers ensure they don’t accidentally violate copyright laws?

Case 3: Presenting Code as More Complete or Tested Than It Is

“The Rushed Delivery”

Scenario:

Sarah, a junior developer at SecurePay, is working on a new fraud detection system for online transactions. She’s been working long hours to meet an unrealistic deadline set by her boss, Jason.

With just two days left before the launch, Sarah discovers a critical bug that could allow hackers to bypass fraud detection. She reports it to Jason, who tells her not to worry and insists that they release the software as planned.

Jason justifies the decision:

  • Fixing the bug would take too long,
  • Most users probably won’t be affected, and
  • They can patch it later if necessary.

Sarah is uncomfortable. She knows that releasing software with a known security flaw puts users at risk—but she also fears losing her job if she pushes back.

Discussion Questions:

  1. Is Jason justified in pushing forward with the release?
  2. What ethical responsibility does Sarah have in this situation?
  3. Should Sarah go above Jason’s head and report the issue to higher management?
  4. What might happen if the security flaw is exploited before the company patches it?

Case 4: Releasing Software Too Early to Meet Market Demands

“The Incomplete App”

Scenario:

Tech startup SwiftChat is developing a new social media app that competes with larger platforms. Investors are pushing for an early release, even though the development team has flagged major issues with the app’s security and stability.

Emma, a backend engineer, warns that the app crashes frequently and has gaps in its encryption that could allow data leaks. However, CEO Mike insists they release now to capture market share and promises they will fix the issues later.

A few weeks after launch, hackers exploit the weak encryption, exposing thousands of users’ private messages. The company faces public backlash, and SwiftChat’s reputation is permanently damaged.

Emma now wonders: Could she have done more to prevent this disaster?

Discussion Questions:

  1. What are the ethical responsibilities of a company when releasing a product?
  2. Should Emma have refused to support the launch?
  3. If a company knowingly releases an incomplete product, should they be held legally accountable?
  4. What can companies do to balance business pressures with ethical responsibilities?

Case 5: Reusing Proprietary Code from a Previous Job

“Bringing Code to a Startup”

Scenario:

David, a senior software engineer, worked at BigCorp Tech for five years before leaving to start his own company. At BigCorp, he wrote a powerful search algorithm that helped optimize database performance.

Now, working at his startup, David realizes that he could save months of development time by reusing parts of the code he wrote at BigCorp. He modifies it slightly and integrates it into his startup’s product.

A year later, BigCorp discovers that David’s startup is using an algorithm very similar to theirs. They file a lawsuit for intellectual property theft, arguing that David’s knowledge and previous work belong to them.

David believes that since he wrote the code, he should be allowed to use it. However, his former employment contract stated that all work he did belongs to BigCorp.

Discussion Questions:

  1. Is it ethical for David to reuse code he wrote at BigCorp?
  2. Does modifying the code significantly make it ethically acceptable?
  3. Should companies be able to claim ownership over an engineer’s ideas after they leave?
  4. If David had rewritten the algorithm from scratch, would the ethical implications be different?

Final Class Discussion

After each team presents their analysis, facilitate a class-wide discussion:

  • What common ethical challenges appeared across cases?
  • Did any of the cases surprise you?
  • How do these ethical dilemmas connect to real-world software development?
  • What can future engineers do to uphold ethical principles in software development?
Scroll to Top