Critical Digital Practices
Welcome, whoever you are
Critical Digital Practices is a self-paced introduction to some fundamental skills and concepts in computing.
Its target audience is you—whether you’re a learner in pursuit of computing skills and concepts or a teacher looking to teach those skills and concepts to others. In accordance with the site’s Creative Commons License, you’re free to copy, adapt, and remix the content here with attribution. You can fork or clone the course on GitHub or just copy, paste, and edit.
This isn’t a computer science course, although it does mention a handful of key concepts from that field. Nor is it a programming course, although it does explain how to run some simple programs and includes a brief introduction to one popular programming language, Python.
Rather, the course explains, at a very basic level, things like how to understand and navigate your computer’s file system, how to interact directly with your computer’s operating system through the command line, how your computer thinks about “text,” how computers connect to each other through the internet and the web, and how you can work responsibly and ethically with data.
These are the “digital practices” referred to in the course title. They’re not very hard to describe. But why is the course titled critical digital practices? That takes a little bit of explanation.
Why “Critical” is critical
“But lo! men have become the tools of their tools.” —Henry David Thoreau, Walden, 1847
This course encourages you to think critically about the larger contexts in which you carry out your digital practices, whatever they may be, and to attune yourself, in particular, to the way your digital practices impinge on your and others’ freedom and autonomy.
Computing is a deeply social activity. Even when you’re alone with your screen, locked in private battle with data you’re trying to wrangle or the HTML code for your website, the “what,” “how,” and “why” of your activity all connect you to other people: to the designers of your computer’s hardware and operating system, to the developers who created the software you’re using, to the owners and admins of servers or platforms you may be relying on, to all those whose collective theoretical insights, technical innovations, and programming efforts, stretching back through generations, perhaps, have laid the conditions for you to accomplish your personal task.
Your activity connects you, as well, to the indivduals or companies that may be collecting data about your activity on your computer itself or on the web, to the developers whose code may have intentionally locked you out from leveraging certain of your machine’s capabilities (such as extracting an e-book’s text content from the proprietary wrapper containing it), to the legal system that might make it a crime for you to leverage those capabilities even if you’re able to overcome the technical barriers, to the politicians and organizations who, through laws, regulations, or standards, may have either restricted or enabled your freedom to access knowledge, share your creativity, or associate with the communities you care about.
As some of these examples suggest, whether software code enhances or limits your freedom or autonomy—perhaps enhancing your autonomy by limiting others’ freedom to violate your privacy or discriminate against you because, say, of your race, gender, gender identity, or sexual identity—isn’t determined only by the legal regime governing uses of the code; it may be a function of what’s in the code itself. This is an important part of what Lawrence Lessig meant by his influential formulation “code is law”. It’s also one message of the recent film Coded Bias, which focuses on algorithmic racial discrimination. It’s an insight driving much of the most important discussion right now about artificial intelligence (AI), large language models, the tools built with them (such as ChatGPT), and the potential of these tools, on the one hand, to propel discovery and unlock human creativity and, on the other, to distort reality, disrupt democracy, and confine our thinking to boxes of an elite technocracy’s making.
At the end of the day, a central premise of this course is that the more you understand about the digital tools you use, the more likely it is that the tools will serve you, rather than the other way around. As Douglass Rushkoff writes in Program or Be Programmed: Ten Commands for a Digital Age (OR Books, 2010):
Digital technology is programmed. This makes it biased toward those with the capacity to write the code. In a digital age, we must learn how to make the software, or risk becoming the software. It is not too difficult or too late to learn the code behind the things we use—or at least to understand that there is code behind their interfaces. Otherwise, we are at the mercy of those who do the programming, the people paying them, or even the technology itself. (128)
As Rushkoff suggests, simply to know that there is code behind an interface is to loosen somewhat its dominating grip. To understand, even in a very basic way, how that code operates is presumably to loosen it still more. Coding itself aside, this course assumes that even the simple step of interacting with your computer’s operating system through the command line rather than its graphical user interface (GUI) of windows and icons—one of the first steps we’ll take together—will give you a significantly greater sense of control as a digital citizen.
Finally, it assumes that if we want to be thoughtful, responsible, and autonomous digital citizens, both free in our own practice and inclined to respect and promote the freedom of others, we need at least some sense of the historical, social, political, economic, technological, and other contexts in which modern computing infrastructure and practices emerged and operate. Although it doesn’t attempt anything like a thorough investigation of these concepts, the course does try to keep them steadily in view, beginning with the question posed on the first page of the first module, What is a Computer?
Course overview
Module 1: Meet Your Computer
Module 2: The Command Line
Module 3: What is Text?
Module 4: Internet and Web
Module 5: Working with Data
Module 6: Content Management: WordPress and Omeka
Module 7: A Very Brief Introduction to the Python Programming Language
Improving the course
Spot an error or have an idea for making the course better? Don’t hesitate to open a pull request.
Attribution and acknowledgments
Critical Digital Practices was created by the Center for Digital Learning at SUNY Geneseo. Paul Schacht is the principal author. Some content has been remixed, with gratitude, from repositories openly and generously shared by the CUNY Graduate Center’s Digital Humanities Research Institute. Thanks to Amanda Schmidt for the many wonderful hours of conversation and brainstorming that are reflected in the underlying concept and overall design of the course.