Cyrus Stoller home about consulting

Does computer science belong at a liberal arts college?

To skeptics, studying at a liberal arts college is synonymous with studying things that aren’t practical. To me, the liberal arts ethos is less about what students study and more about the process of learning. A liberal arts education prioritizes refining critical thinking over learning particular facts (e.g. GAAP accounting rules). As a result, mastery is defined by your ability to teach yourself new things in the future.

Is computer science too vocational?

It depends on how it’s taught. If a liberal arts college were to take the approach that vocational bootcamps are taking, then I’d say the answer is yes. But, from what I’ve observed from friends who have gone through these bootcamps, my experience studying computer science at Swarthmore was different; it was more focused on theory. Unlike bootcamps, Swarthmore doesn’t offer a course on how to deploy a web application or how to use a package management system. And when I did write code for class, it was in a tightly controlled environment to stay focused on wrestling through conceptual challenges. In contrast, my friends, who have gone through bootcamps, seem to place a larger emphasis on getting a full system of tools working with each other instead of thinking through which algorithm would work best. As an example, in a bootcamp setting, students would likely use whichever sort function is available, while, in a liberal arts college setting, students would focus on the tradeoffs between different sorting algorithms and learn about which contexts would warrant each one.

A liberal arts college should not make its primary focus teaching the facts that students will need to know to start a job immediately; that’s what training from employers is for. This isn’t to say that students shouldn’t learn particulars (e.g. Ruby on Rails), but they should be able to learn particulars on their own relatively easily outside the classroom. Given the pace that programming languages and their accompanying frameworks evolve, specifics quickly go stale. It’s a real asset to be able to teach yourself new skills to stay competitive.

Labs and assignments to write programs that need to meet specifications don’t make computer science vocational any more than labs in the natural sciences (e.g. chemistry); programming assignments are meant to teach students lessons that help improve mastery. It so happens that these same skills happen to have professional value right now, but that isn’t the primary motivation for assigning them.

Similar to the process of learning a foreign language, there are certain facts that need to be learned before you can move forward. When taking introductory Chinese, this entails memorizing characters and vocabulary. When taking introductory computer science, this entails learning syntax and learning how to thinking in a highly structured way that can be translated into code. So while there are some relatively rote mechanics in intro computer science courses, these are key foundational elements for students to understand before they can approach more advanced topics. Just because there is an element of the computer science curriculum that is more mechanical, that shouldn’t disqualify computer science from belonging at a liberal arts college any more than introductory foreign language courses.

Forms of literacy

To me, the goal of a liberal arts education is to make students literate in all senses of the word. This explains the importance of students having exposure to the humanities, social sciences, and natural sciences. Right now, I think there’s broad agreement that students should have read the works of important thinkers and be familiar with basic mathematical tools like statistics that are used heavily in the social sciences. I’ll call these: 1) literacy; and 2) numerical literacy. In the near future, I think there will be broad consensus that 3) technical literacy should be added to this list.

I suspect that computer science will eventually be treated like statistics; it’s a tool that’s key for students to understand in many departments. In many cases a basic computer science course will be considered a prerequisite for higher level courses. Or, basic computer science may be treated as a course like econometrics (statistics / economics) or political theory (philosophy / political science) that is internalized by other departments. Regardless of where these concepts are taught, it will be understood that students should have familiarity with how to use a computer for more than just surfing the internet and word processing. Computers are tools that allow us to ask questions that were prohibitively expensive before. Every student should be equipped with the tools to ask (and answer) questions. The only way to do that is to be familiar with the universe of questions that are reasonable to ask.

Once this is accepted, I imagine there also will be resources to help students to write clean code in the same way that there are resources available to students to help them improve their writing and clarity of thought. The process of writing a good essay and writing a good program have a lot in common. It takes deep understanding to make complicated concepts simple and accessible. While a program may run invisibly in the background, as soon as you start collaborating with others the quality of code quickly becomes a factor in how fast you can make forward progress because everyone needs to understand what the code is doing.

Writing a program that is technically correct but incomprehensible isn’t worth much for the same reason that a long protracted sentence that is technically correct but hard to read isn’t worth much. Being able to express oneself clearly is one of the key hallmarks of a liberal arts college graduate. Given that computers are here to stay, there’s no reason to exclude software from being a way for students to be able to express themselves.

Conclusion

Saying that someone is studying computer science is often mistakenly used interchangeably with learning to write software. To me, that’s a gross oversimplification. Programming is a means to exploring models of computing. Everyone should know how to program. But, that’s different from everyone needing to take higher level computer science courses like compilers.

Computer science departments have an important role to play on liberal arts college campuses. They help broaden students horizons and bring a different perspective to how students think about problems like data privacy and information sharing that are key contemporary questions for the social sciences and humanities to examine.

With large data sets (public and private) available for almost any imaginable topic, the challenge is to think of the right question. Fishing for answers is more likely to be ineffective and unpredictable. So, insight will require hypotheses based on critical thinking, and the best preparation to ask these questions is a liberal arts education.

Category Opinion