Human-centered definitions of computer science for public education
I’ve spent the past few years dabbling in K-12 CS education policy in Washington state. It’s been a fascinating journey, speaking to state legislators, lobbying groups who’ve been in the state for decades, and countless stakeholders. I’ve learned that the advocacy role can be a both impactful and endlessly surprising.
One recent surprise is that I need to help Washington state to decide what computer science is. Without a definition, it’s actually hard to do many things in public education. For example, in Washington state we have recently required all high schools to teach a computer science course by 2022. Well, what counts? Without a definition, it’s hard to say. To help with all of this communication, I’ll be spending an day in Olympia, our state capital, trying to decide on a definition of CS with stakeholders from across the state. A paid facilitator is going to help us do the work, engaging me, staff from Washington’s Office of the Superintendent of Public Instruction, and likely several teachers and other people in teacher support roles.
What makes this task hard, of course, is that the discipline of academic computer science has long struggled to define itself, especially as it continually reinvents itself. If the discipline itself can’t define itself, how can anyone else? And worse yet, the definitions that computer science does come up with are often inaccessible to stakeholders in public education, because they rely on words and ideas that most people don’t already know. For instance:
- The study of the principles and use of computers (Oxford English Dictionary). What are these mystical principles?
- The study of computers and algorithmic processes, including their principles, their hardware and software designs, their implementation, and their impact on society (ACM). What’s an algorithm? What’s an implementation? The impact on society part makes sense, but don’t economists do that?
- The study of processes that interact with data and that can be represented as data in the form of programs (Wikipedia). Processes? What’s a program? What is “representation”?
- The study of computers and the phenomena that surround them. (Newell, Perlis, and Simon 1967). I love this one because it’s so intellectually inclusive (and I’m a biased Carnegie Mellon alum). But doesn’t this just say that computer science is anything involving computers? Education involves computers, so is that computer science?
- The systematic study of algorithmic processes that describe and transform information: their theory, analysis, design, efficiency, implementation, and application (Denning 1988). What does “transform” mean? What is “information”? What is “design”?
As a computer scientist, I have a pretty good idea of what all of the definitions above are trying to capture, but I can say from talking to many students, parents, teachers, principals, superintendents, and non-CS higher education faculty that they are very much written by computer scientists for computer scientists. K-12 CS education frameworks and standards haven’t done much better because they essentially use the ACM definition above as a foundation.
I don’t have any illusion that I can solve this problem, and yet, I’m in the position of having to help devise some kind of definition for the state, and I don’t think the widely used ACM definition is really going to help administrators decide what counts. And so today I spent a bit of time trying to find words to define computer science and other related terminology that would build upon ideas that stakeholders in publication already know.
I followed a few principles:
- Keep definitions short.
- Don’t worry about how “true” definitions are with respect to academic CS; worry more about their comprehensibility.
- Be human-centered, appealing to what people do with computers, rather than what computers do.
To follow these principles, I built a definition of CS sequentially, by first defining concepts that stakeholders in public education view as close to computer science, but often confuse for computer science. I then define some more concrete concepts related to computer science, and then use those words to eventually define computer science. Finally, I end with definitions of more advanced concepts related to computer science that are prevalent and of interest to public education stakeholders.
And with that setup, here are my proposed definitions:
- Software. Apps, websites, and other products and services that people use on computers, laptops, tablets, smartphones, and other digital devices that have computers in them.
- Educational technology. Software designed to support learning and teaching (e.g., grading software, math practice software).
- Computer use. Clicking, tapping, and typing on a computer to control what the computer does next.
- Computer programming. Clicking, tapping, and typing on a computer to write, test, and revise instructions that control what a computer will do in the future.
- Coding. A synonym of computer programming.
- Program. The final product of computer programming; an essential part of software.
- Software engineering. Programming, usually in teams, with the goal of creating software for others to use.
- Computational thinking. Abstract, precise, and creative reasoning about how to solve problems with programs.
- Data science. The use of data, statistics, and programs to answer questions about the world.
- Artificial intelligence. Programs that can do things that humans can do, such as speak, understand language, perceive the world, answer questions, and make complex decisions (e.g., autonomous robots can navigate the world like people, digital assistants can do some things that human assistants can do, web search can do some things that librarians can do).
- Machine learning. Algorithms that create programs from data, often used to enable artificial intelligence (e.g., using large data sets of medical images labeled as cancerous or not to classify whether future images contain cancer).
- Computer science. The academic discipline that studies both human and technical aspects of computer use, computational thinking, programs, programming, software, and software engineering.
- Computing. Computer science, plus other academic disciplines that study related phenomena, including 1) computer hardware and its design and construction; 2) information and how to collect, process, store, and distribute it in society; 3) how computers and society mutually shape each other.
- Computer science education. Any context of formal education that teaches concepts and skills studied in computer science.
- Computing education. Any context of formal education that teaches concepts and skills studied in computing.
These obviously aren’t perfect. I don’t know if perfect is possible with words. And I highly doubt they’ll be widely adopted within computer science. But I hope that human-centered definitions like these will be adopted in Washington state, lowering one barrier to public education stakeholders offering CS to every student, in every year of their education.
What do you think of the definitions? If you’re a computer scientist, are you angered by their informality and imprecision and the omission of the word “algorithm”? If you’re not a computer scientist, do they make sense?