Wrong things that I learned as an undergraduate in computer science, either explicitly in courses or implicitly through its culture (or both!), that I have had to unlearn over the last 14 years: A THREAD.
- Edge cases are annoying; they are outliers that you will spend an outsized amount of time trying to force to work reasonably, and some of them aren't worth the time to fix. (Somehow, edge cases were not described as being artifacts of a poorly designed computational model.)
- The best way to deal with messy things is to compartmentalize, reduce dependencies, and carefully control communication between related entities, probably by establishing one entity that manages it all.
- Being able to apply the same algorithms to problems from wildly different domains without needing to care about the domain itself is *awesome*. That’s how you know you’ve got a great algorithm. We should try to force new domains to fit existing algorithms.
- You can and should describe everything as an object in a hierarchy.
- Everything can be well-represented with boolean logic. If you can’t make it work, it means you don’t understand the thing well enough.
- Numbers are better than Strings because they are easier to compare.
- Quantitative data is the only good data because it gives real numbers, and numbers can be measured.
- “I got into computer science because I don’t want to have to care about people.” That is a funny joke.
- If it’s more efficient, it’s better. The quality of a program, independent of how people interact with it, should be evaluated only with respect to how well it minimizes cost.
- Humans are, ultimately, rational agents. Rationality is core to modeling intelligent behavior.
- It is important to assert control over the messiness of reality by enforcing structure and order.
- Theories are better the more concrete they are. A theory is weak if it is not accurate enough to be expressed in code.
Our tendency, I fear, is to build fundamentally oppressive computational models and then spend all our time debating the best way to implement the abstraction. We luxuriate so much in the purity of the model that we forget to reflect on what the model fails to capture.
I know some things are changing. I'm sure some of what I learned is no longer taught. I was also not the best student. Culture shifts, ever so very very slowly. But I also know that I have colleagues who would still defend these statements. Who have not considered alternatives.
We need to have a reckoning: our discipline is failing society, and fixing it requires more than just recruiting more diverse students, teaching younger kids to code, and applying code to "solve social problems" (please... please, no).
We need to fundamentally shift what computer science is. The values that currently underpin computer science run counter to social justice.
Seeing some response that this is why we need integrative ethics in CS Ed and, like, yes we do BUT ALSO

the issues run deeper, are core to the languages and ways of thinking we use and continue to teach alongside ethics. We can’t address this through ethics education alone.
You can follow @gillianmsmith.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.