- In the context of Computer science, what is abstraction?
- In the context of CS, abstraction is the bracketing of unnecessary information from diverse components in a system and is a core logical framework and practice.
- What is epistemology?
- Epistemology is the study of thinking, knowing, and validating information.
- What is an epistemological framework?
- An epistemological framework, also known as epistemologies, is the lens through which we see the world, how we determine what information is worthy of consideration, and how we incorporate that information into our understanding of the world. These can be collective and individual, and therefore are often analyzed as such.
- What is modularity?
- Modularity is the breaking down of systems into smaller components, such as the breaking down of large problems into smaller subproblems. The benefits of this is that monolithic structures can be brittle, complex, and consolidate power, while smaller “modules” can be individually tested, replaced, and reconfigured. The detriment is that the impacts of the whole system are harder to see and address.
- What is ontology?
- Otology is the study of being and the structuring of what is real.
- What are the overarching learning objectives that students should take away from this course?
- Students must be able to appreciate abstraction as a framework for problem-solving, acknowledge that anti-politicism is political, and recognize critical inquiry as a core component of technical education. They also must be able to understand abstraction as an epistemology, including how abstraction and modularity shape the world around us and how abstraction marginalizes students whose work cannot be extricated from their identity.
- How does the framing of abstraction as core to algorithmic and computational thinking implicitly produce an epistemology?
- This epistemology necessitates the removal of information that is not easily captured by a computational data structure or algorithm. This epistemology is anti-political, since politics is viewed as extraneous information that is unnecessary to the functioning of the system.
- How does the anti-political nature of computer science education impact those in the computer science community?
- If abstraction is a foundational component of computer science, then a person who is unable to extricate their identity from their work is not a ‘good’ computer scientist. It is often more difficult for people of color, and disabled, poor, indigenous, LGBTQ, and feminine people to compartmentalize their identities from their work. This is not by choice, but by circumstance and by external pressures (racism, ableism, classism, homophobia, transphobia, sexism, etc). It explicitly creates anti-political computer scientists, who are much more likely to be fully-abled, cisgender, middle-class, heterosexual, white men.
- How is the anti-political standpoint political?
- Anti-politics is an implicit acceptance of the status quo, thereby advocating for the preservation and reinforcement of existing power structures, which are built on race, class, gender, sexuality, ability, and nationality. It is also an externalization process — political issues are viewed as being “out there” and not “in here,” and so people come to believe that it is not their responsibility to think about them.
- What is the connection between abstraction and modularity?
- The combination of the epistemology of abstraction-for-purity with modularity contributes to the idea that courses outside of computer science are replaceable, reconfigurable, and unnecessary. Ethics classes are epistemologically viewed as supplementary, distracting, and removed from the “pure” computer science. Modularizing ethics into separate courses reinforces the idea that ethical considerations can, and should, be segregated into specific, separate sections of course instructions instead of being a continuous consideration.
- Isn’t there utility in abstraction and modularization?
- Absolutely! Abstraction can help us solve a problem we’ve never seen before, or come up with general solutions for future problems. Modularity allows us to create giant systems – if your computer’s RAM cards get fried, you can replace them without throwing out the whole machine (if it’s not a Macbook). However, these concepts become problematic when we allow them to shape everything we see and do – that’s what we mean by an epistemology. That’s when we start to ignore how individuals are shaped by the politicization of our bodies, identities, and circumstances. That’s how we push out people who simply cannot (or will not) separate themselves from their work.
- Why are we studying this?
- Understanding abstraction is central to modern software literacy. Abstraction is often used in computer science when the programmer either hasn’t seen the problem before or there are a lot of factors that complicate the problem. It can often help to understand other computer scientist’s code and how they will see this world. This makes it easier to communicate and collaborate on projects. It also will help students to understand their own educational systems and how the design of them is intended to teach certain, specific skills.
- How do we prevent politics from entering the classroom?
- We can’t. Everything we do is political. Having this discussion is political, since we are actively challenging the status quo. Not having this discussion is political, since that is an implicit advocacy for the status quo. The status quo is political because there exist power structures that marginalize certain groups.
- Why do we need to talk about ethics in a CS classroom? This isn’t an ethics class.
- We need to talk about ethics in a CS classroom because we make ethical decisions every day. Not all of them require hard inquiries about how they align with our values, but many do. Furthermore, when we create things, such as software, we inject our values into these items. If our values are anti-political, we risk further marginalizing people who already are.