This is the time of year when academic departments (at least in the U.S.) organize "retreats." A retreat is a kind of faculty meeting held over a long period, maybe 1/2 day to two days. Retreats are typically used for working on big goals that take more time that can be fit into a traditional one hour faculty meeting. They might tackle big topics like curricular re-design or addressing challenges in the program. A retreat is a good place to ask the question, "What should we change, and what’s important to keep the same?"
In December 2023, ACM Inroads magazine ran an article by Tony Clear, "CS1: the most dangerous course for CS educators to teach?". He said that his institution keeps changing their introductory course, mostly because of hype and fashion cycles. New languages come into fashion, and old programming methods go out of fashion. But the results stay pretty much the same, because introductory programming is a hard course to get right, and most of the time, what is being changed has little to do with why the class isn’t succeeding. This places the instructors of CS1 at risk. Tony writes:
So, to my colleagues over the years who have been overridden by their superiors when they passed too few students or diverted to teach another course when the pressures of the waves of fashion became too high, and to today’s pioneers, this is just the dangerous territory which an introductory programming educator must (often all too transitorily) inhabit!
Last November, the Center for Inclusive Computing (CIC) at Northeastern University released a white paper, "On the Durability of BPC Interventions." CIC promotes methods and practices that increase diversity in computing departments. They broaden participation in computing (BPC). The challenge is how to keep those methods going after the funding runs out, or after the champion of the methods moves on (maybe to another institution, or to retirement). For example, CIC recommends having regular data gathering and publication, so that faculty keep getting reminded of their diversity goals and the progress towards those goals. They also recommend creating departmental bylaws that can help to sustain BPC practices.
Both Tony and CIC are dealing with the same problem. Change is constant. How do we steer change? Can we protect the parts of what we do that are most important? Can we direct attention to the things that really need to change, and not be driven by the hype or fashion of the moment?
One strategy that I’ve seen succeed is to develop a definition of computer science that protects what is important, that codifies what is core. There is a tendency over time for departments to narrow the field, to get to a small kernel of what the department is really about. Resources become scarce, or we develop a mindset that they are scarce. Maybe competition for hiring slots forces departments to refine about what they most care about — but too often decided for the short-term, not for the long-term. Narrowing the definition of computer science is a process of gatekeeping.
Gatekeepers want to keep insiders in and (perhaps even more important) outsiders out by opening and closing a real or imaginary gate.
A narrower definition works to limit whose work counts as "computer science" and narrows who participates in computing. Here are two examples of how to protect what’s important with a good definition of CS.
Define the Curriculum: The undergraduate Computer Science degree at Georgia Tech’s College of Computing uses a curricular model called "Threads." Courses are organized into 8 threads: Intelligence, Devices, Information Internetworks, Systems and Architecture, Theory, Modeling and Simulation, People, and Media. Students have to complete two threads to earn their undergraduate degree. It gives students enormous flexibility in defining their program. It also limits how much the degree can be reduced in the face of scarcity. Once threads like "People" and "Media" are created, it’s hard to get rid of them. They serve as guideposts that keep computer science broad and attending to long-term goals and values. The definition of the 8 threads is a broad definition for computer science.
Define the Field: In April, I gave a talk to the Carnegie Mellon University (CMU) Software and Societal Systems Department (S3D) titled"Broadening Participation in Computing by Moving Away from Computer Science" — slides available here, and video available here. The argument that I made was that we need to move beyond the narrow focus of CS departments to embrace alternative end-points for computing education in order to broaden participation in computing.
The first part of my talk reviewed definitions of computer science. The first published definition of computer science appeared in the journal Science in 1967, by Alan Perlis, Herb Simon, and Alan Newell:
"The study of computers and all the phenomena surrounding them."
There were lots of nods when I put that slide up. These authors (all ACM Turing Award laureates) were four of the founders of computer science at CMU. The School of Computer Science at CMU still holds to that definition. It’s a big and broad definition, and that breadth likely has something to do with why they have departments like a Robotics Institute, HCI Institute, Computational Biology Department, and S3D.
Here’s the definition of computer science used in the K-12 Framework for CS Education in the United States.
Computer science is the study of computers and algorithmic processes, including their principles, design, implementation, and impact on society (Tucker, 2006)
That’s a narrower definition. It’s not "all the phenomena." It’s a smaller set of phenomena. At least it includes "impact on society," which gives reason for computer scientists who follow that definition to fight for diversity and BPC.
Here’s the definition that the ACM and IEEE 2020 Computing Curriculum uses:
Computer science is the foundational discipline with an emphasis on discovery related to programming, algorithms, and data structures.
That is an even narrower definition, which doesn’t include anything about "society" and much less "all the phenomena." This is an example of narrowing the definition, from 1967 to 2020, so that there’s only a "core," the "kernel" of what is computer science.
I prefer Georgia Tech’s and CMU’s definition to the one in the K-12 Framework or in the Computing Curriculum. We ought to define computer science to be what we think is important, and not let it get boxed into a narrow definition by a scarcity mindset. Let’s define computer science in ways that keep us focused on long-term goals, aware of our impact on society, and holding on to our values like diversity and broadening participation in computing.
Mark Guzdial is professor of electrical engineering and computer science in the College of Engineering, and professor of information in the School of Information, of the University of Michigan.
No entries found