CompSci 308
Spring 2024
Advanced Software Design and Implementation

Weekly Journal : Applying Professional Code of Ethics

We suggest that engineering should be viewed as an experimental process. It is not, of course, an experiment conducted solely in a laboratory under controlled conditions. Rather, it is an experiment on a social scale involving human subjects. — Mike Martin and Roland Schinzinger

This exercise is intended to introduce you to a Code of Ethics that attempts to define the ethical behavior of a professional programmer (although there is debate about how well it is doing and it is definitely unenforceable).

Submitting Your Work

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

Specification

Read the ACM Code of Ethics and Professional Conduct (only about 3500 words!) or review this slide presentation or at least watch this video discussing the highlights (and perhaps this classic cartoon and discussion), then critically analyze two of the presented Case Studies according to the Code using the Proactive CARE process. For each situation determine which clause(s) of the Code of Ethics you feel were violated.

After attempting to apply the Code, consider how useful, comprehensive, and reasonable it is to you personally by describing five ethical "lines" you feel you definitely will not cross five years into a technical professional career (not necessarily coding). Even though the code may sound obvious or empty, too many details make it sound legalistic and tedious and its goal is to present aspirations that challenge the way we act as software professionals.

Finally, consider the quote at the top of the page about the current state of how software is released into the world and address ethical implications of two examples from current events (either those given in the "Uses of the Code in the News" Case Studies section or related to the last year of chaos due to LLMs or your own interests). Your analyses should address both positive and negative possible outcomes.

ChatGPT/Copilot

OpenAI's ChatGPT or GitHub's Copilot 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, it would be helpful to share our collective experiences. To that end, going forward, 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. There is also an ED thread tag for ChatGPT. This exercise can also help you reflect on how to use it more deliberately and usefully.