Abstraction is an essential part of Computer Science where ideas or problems are simplified by ignoring details and highlighting patterns and general characteristics. It allows us to build abstract solutions that work widely and can be easily manipulated. But it can also lead to ethical issues worth pondering. Here is a guide to help you and your student dig into the topic.
This is part of a series of documents meant support a discussion and investigation of ethics and morals in relation to the impact of computer science on the world at-large. You can find the rest of series here:
Introduction: In this document we will engage with the CS concept of Abstraction, which
represents a simplified idea or problem derived by ignoring details and using patterns or general characteristics. A simple example of a CS abstraction can be found in programming languages: They allow programmers to give complex instructions to computers without worrying about the bits & bytes! (CSforAll NYC Blueprint). Sometimes this can result in losing sight of the humans, identities, and voices involved.
- What are developers accountable for in an algorithm?
- What are the choices made in designing and building a project?
- How do we see the values embedded in the technology we use and develop?
- Create agency and transparency for users by articulating how an algorithm works and ask for feedback.
- Solutions to problems can become overly complex in the hands of engineer who seek universal solutions.
- When a solution, data set, or algorithm is moved to another or combined with another there can be unintended consequences.
- Tightly define the community you are trying to serve. Be wary of universal solutions.
- Diverse teams may be able to make better decisions.
- Reducing humans to numbers makes it easier to build products but can be devastating for the humans.