CompSci 308
Spring 2024
Advanced Software Design and Implementation

Weekly Journal : Applying Professional Code of Ethics

The more software continues to take over every aspect of our lives, the more important it will be for us to take a stand and ensure that our ethics are ever-present in our code. — Bill Sourour

This exercise is intended to help you think about how to act when you perceive an ethical situation so you stand up for our values under pressure to better align your professional life with your principles.

Submitting Your Work

Submit a Markdown formatted plain text file, named week13_ethics_applied.md, to the individual portfolio_NETID repository provided for you in the course's Gitlab group.

Specification

Having a clear Code of Ethics is essential to ensure a community has a unified, common, set of shared values but, like software development, it can be difficult to act under the different pressures of getting things done. Review the seven pillars of Giving Voice to Values (GVV) that aim to help effectively act on your values and ethical principles in the context of your professional responsibilities. Its goal is not to persuade people to be more ethical (it assumes most people want to act ethically), but to provide advice to about actions can be taken to be successful and effective.

After reviewing the GVV pillars, consider these typical scenarios a professional software developer may encounter and how you would respond to each. For each situation, note which clause(s) of the ACM Code of Ethics, if any, you feel were violated, and which pillar(s) you felt specifically helped you figure out what actions to take. If you do not feel the scenario presents any ethical issues, what small change(s) (such as those suggested in each one's final question) would create issue(s) for you?

  1. You are a programmer for a company that has been engaged by a company that manufactures voting machines in order to help it fulfill its contract with several cities and states to use the machines in their upcoming elections. While installing your software on the voting machines, you learn that problems in the machine's manufacture mean one in hundred is likely to miscount during an election. Who, if anyone, should you report this issue to and, if not, is there a number of faulty machines (1/20?, 1/10?, 1/2?) for which you would feel obliged to report the issue?
  2. You are a programmer trying to write a large statistical program and, after months of tedious programming, you find yourself stuck on several parts of the program. Your manager, not recognizing the complexity of the problem, wants the job completed in the next few days. Not knowing how to solve the problems, you remember that a coworker had given you source listings from her current work and from another codebase she has access to. On studying these programs, you see two small, but essential, code segments that could be directly incorporated into your program. Would you use the code and how, if at all, would you document your choice? If you choose to use the code, is there code (from your previous employer?, a leaked version of a commercial software package?) you would not feel comfortable copying from?

Finally, use GVV to analyze an ethical issue you encountered during the semester (within or outside a course, that you handled well or poorly). In describing the event, make sure to not include any personally identifiable information. Use this as an opportunity to explore your own ethical values and different ways in which you can positively impact a situation.

ChatGPT

ChatGPT can help you generate ideas, create example code, review, refactor, or even debug code. While you are not required to use it, if you do, I think it would be helpful to share our collective experiences. To that end, each week's Journal will include a place for you to share how you used ChatGPT in more detail than would typically be found when attributing it within your code or README file. I have also created an ED thread tag for ChatGPT. This exercise can also help you reflect on how to use it more deliberately and usefully.