According to figures kept by the university’s Institutional Research, there were 574 declared undergraduate computer science (CS) majors, making CS the largest major by far. The next largest major is human biology with 323 declared majors – just above half the size of CS. This is the result of a half-decade-long trend with CS enrollment growing by around 25 percent every year since 2009.
The question lingers at the back of our minds: Is Stanford University about to become the Stanford Institute of Technology? Looking at the enrollment numbers alone, that seems like a real possibility. Even though Stanford’s admission process is as diverse as it has ever been, many freshman – from prospective pre-meds to math geeks to public policy enthusiasts – seem to end up in CS by the end of their sophomore year.
But enrollment numbers do not tell the whole story. Behind the monolithic number that tells us how many students are declared CS is an extremely broad field of study that encompasses a huge variety of topics.
Any CS major would attest that there exist a few distinct subsets of CS that have little overlaps with one another beyond the shared core classes. A student studying human-computer interaction is almost guaranteed to never be in the same class as their friend studying CS theory after taking introductory system and algorithm classes. The only reason why they are nevertheless both CS majors is because we continue to see everything to do with computing as a single field of study.
It is time to abandon that outdated classification.
If we trace the roots of political science, economics, chemistry and even computer science itself, we find that they once all fell under the purview of philosophy. As these disciplines became rich and deep enough to warrant their own specialized niches, they discarded the broad and undescriptive “philosophy” label when the time was right.
Today, the exact opposite is happening with CS and it makes little sense. Topics like network design and statistics that have existed independently long before the digital age are being rebranded and subsumed under CS. Business analysts and sociologists are both calling themselves “data scientists” on LinkedIn and consumer service companies like Uber and Airbnb are branding themselves as technology companies simply because they use computers to solve problems, even though we do not consider farmers to be technologists simply because they employ automated machines or predictive weather models.
Imagine if people majored in mathematics to learn to run a company, or trade stocks, or develop iPhone apps or sequence genes. That is an absurd situation, even if mathematical principles are essential to all those tasks. Yet, that is essentially what many Stanford CS students are doing in droves. As computing and coding as a whole are becoming indispensable tools for those who seek knowledge in other fields, CS appears to have become the learn-to-do-anything-and-everything major, even if most people really only want to learn software development.
In light of this, CS ought be split up into four separate majors that better align with the depth and focus of the actual learning material: Computer Science for computing theory, Applied Computing for software engineering theory and practice, Human-Computer Interaction (HCI) for UI design and graphics and Artificial Intelligence (AI) for statistical techniques and data processing. These majors will continue to share the core introductory programming and theory classes, just as chemistry and biology share the same mathematics and physics classes. The immediate administrative impact of doing so is manageable because the numerous concentrations in CS already function almost like distinct majors.
The advantage of this change in the longer term is to give each of the distinct majors more flexibility in catering to their students’ needs in terms of curriculum and staffing, bringing themselves closer to departments outside of CS that are more naturally complementary. For example, HCI has more in common with art, product design and communications than it does with AI, and so should be encouraged to reach out and become an integral part of those majors instead of bringing topics from those existing fields and absorbing them into the complex amorphous blob that is CS today. Similarly, CS theory has more in common with mathematics and AI with statistics.
The rule of thumb governing all of computer science and engineering is building good abstractions and separation of concerns. In economics, the same principle governs specialization and trade. The CS major as it exists today is a poor abstraction framework consisting of dramatically different fields of studies whose only shared feature is that they all leverage computing. As everything from sociology to biology becomes dependent on digital technology to achieve progress, it is about time we separate coding as a tool for every discipline from computer science as a distinct field of study, just as mathematics and philosophy have done in the past.
Contact Raven Jiang at jcx ‘at’ stanford.edu.