Part 1: Liberal arts students and computer science. The flow of liberal arts students into computer science is forcing changes in the way computer science is being taught at Columbia.
College computer science classes are packed and overflowing. The trend is nationwide and especially strong at Columbia, which last year saw a 30% increase in the number of computer science majors (over five years, the increase is 230%). These increases don’t account for the number of students enrolling in computer science classes, many of them liberal arts students with little intention of majoring in the field and who even five years ago would not have considered taking a computer science class. But as computational methods turn texts, images, and even video into data analyzable by computer, more students see computing skills as important in their fields. It all adds up to surging enrollments and more diverse classes. Hiring more faculty addresses the numbers, but the different backgrounds and expectations students bring to the classroom are forcing Columbia to new find ways to teach computer science while addressing broader questions of how computer science fits in with other disciplines.
Enrollments in computer science classes are surging. All US universities and colleges are seeing it, and most are on a tear to hire additional faculty to teach computer science, competing with one another to do so. While previous surges in interest in computer science eventually faltered—the first in the 80s as PCs came onto the scene, and another in the 90s preceding the dot.com bubble—this latest wave of students looks to last. Driven not only by majors seeking jobs, the current generation is made up also of students from across the university; in the lead are liberal arts students studying humanities—literature, art, and history—and those studying the social and natural sciences of biology, physics, and chemistry.
Why? Because almost every field is being transformed by data, and data is everywhere. As machine learning and data mining techniques extract meaning from unstructured texts, images, audio recordings, and even video, almost every liberal arts discipline is seeing a fundamental shift from purely qualitative analysis to quantitative analysis. The changes are profound.
If social scientists once assembled small focus groups, today they can mine millions of social media posts. English majors once limited to reading a handful of novels and drawing conclusions from anecdotal evidence today can use topic modeling techniques to analyze large collections of 19th century novels, looking for broad patterns amidst representative data. Linguistics majors who once needed to speak several languages to compare grammatical structures can today apply computational modeling techniques across any number of languages. Biology too is being radically altered by computational methods that possible the analysis of large genomic data sets
The story is the same across the liberal arts: Those who have computational skills to sort through large-scale data can look at their fields more broadly and from new perspectives.
Julia Hirschberg, chair of the Computer Science department, has a PhD in computer science; it is her second PhD. The first is in sixteenth-century Mexican social history.
While an assistant professor in history at Smith College, Hirschberg was creating a socio-economic map of the city of Puebla de los Angeles for the years 1531-1560, correlating where settlers lived within the city according to familial relationships and economic and other factors. The records (land grants and baptismal and notarial records), however, were incomplete, and the multi-dimensionality of the data precluded her from easily visualizing the problem as a graph or map. A computer science friend recognized it as an artificial intelligence problem and put Hirschberg in touch with someone who had written software for a similar problem with 14th century French land holdings. Hirschberg worked initially with a student to adapt the code and ended up learning to program so she could finish the code herself. Fascinated with programming, she took a semester off to take computer science classes at the University of Pennsylvania. Once back at Smith she took math classes and applied to UPenn for an MS degree. Taking some NLP and linguistics classes convinced her to get her PhD in computer science.
Computer skills are critical, and students—majors and nonmajors alike—are signing up for computer science classes in numbers never seen before. Says Julia Hirschberg, chair of Columbia’s Computer Science Department, “We are very happy to see more and more nonmajors taking an interest in computer science as computer science becomes more and more relevant to so many other disciplines.”
For her department, it means hiring more teaching-oriented faculty (three new lecturers this year so far), adding more sections and teaching assistants, and adopting the flipped classroom approach to accommodate more students.
Targeting the curriculum to nonmajors
The real challenge is the diversity represented by liberal arts students. Social science, biology, business, or economics all require different computational proficiencies. The students themselves are diverse. Compared to computer science majors, liberal art students have different backgrounds and varying levels of previous exposure to computer science; some may have none at all. As a result, they may harbor misconceptions about what computer science entails or what they need to know, or they may feel out of place in a large class with students who have been confidently programming for years.
This diversity is forcing computer science departments to rethink how they teach computer science. At Columbia, the challenge is to make computer science relevant to all students while maintaining a high level of rigor so students have the computational tools they need to effect changes in their own fields.
An emphasis on computational thinking
While students often take computer science to gain practical computing and programming skills, at its core, computer science is much more than coding; it is about structuring a problem into individual component parts that can be solved by computer and then representing those components formally and applying algorithms to solve them. This way of decomposing a larger task entails an explicitness of thought and critical thinking that is by itself a powerful method of organizing and analyzing information.
It also requires thinking about a problem in the abstract, stripping away the unimportant details to focus on the essential aspects of a problem, to see perhaps analogies between a problem in one domain and a seemingly unrelated problem in another.
Computational thinking is the bread and butter of computer scientists, and for many students, computational thinking is key to “getting” computer science and understanding how it fits with their interests.
To help students take a more expansive and comprehensive view of computer science and to expose them to its many subfields, the department offers Emerging Scholars Program, a noncoding, once-a-week seminar focused particularly on the collaborative aspects of computer science. Students work in small, peer-led groups and discuss together algorithmic solutions to a set of problems. There is no grading or homework; the focus is entirely on the high-level aspects of computer science. It’s an approach that has been effective in increasing the variety of students who pursue a degree in computer science.
Engaging students on their own ground
In computer science perhaps more than in any other discipline, the best way to learn is by doing. Projects are what get students excited and help them imagine the possibilities of using computational skills in their own classes.
What projects are most instructive depends of course on the student’s own interest. Projects designed for majors might not make sense to liberal arts students, or even engineering majors. For this reason, Columbia has long offered introductory classes geared for specific groups of students. Alongside a general introduction to computer science (1004) are specific ones for engineers (1006) and for social science and other students interested in data processing (1005). While all teach the same basic computer science skills, they differ by programming language—Java for majors, Python for engineers, MATLAB for data processing students—and the types of projects offered.
Computing in Context (1002) is computer science reimagined for liberal arts students. The class is the brainchild of Adam Cannon, who has been teaching introductory computer science for 15 years and has seen the number of nonmajors in his classes climb steadily. Recognizing that classes and projects meant for computer science majors lacked context for students whose next class might be a lecture on Jane Austen or the evolution of liberation theology in Latin America, Cannon radically altered the class structure to accommodate the different computational proficiencies required by different liberal arts disciplines.
Rather than a single professor, Computing in Context is taught by a team of professors. A computer science professor lectures to all students on basic computer and programming skills, and professors in the humanities, social sciences, and other departments show through lectures (some live, some recorded) and projects how those skills and methods apply to a specific liberal arts discipline, or track. All students sit in on lectures on computer science and programming, but then break into different groups for the track lectures. Two students on different tracks might have completely different experiences.
It’s a modular format designed to scale as more departments look to insert computer science into their students’ curriculum. The class debuted in 2015 with three tracks: social science, digital humanities, and economics and finance, and has since added a fourth to teach computer science in the context of public policy. More tracks are in the planning stage.
Says Hirschberg, “Computing in Context is a way for us to work with collaborators from disciplines as divergent as English, History, the Department of Industrial Engineering & Operations Research, and now international affairs, and teach students ‘real’ computer science in the context of problems in their own discipline.”
Suzen Fylke came late to computer science, taking Computing in Context in her last semester as a senior. She had more than once signed up for introductory computer science classes, but never followed through. “I didn’t feel programming was for me, so the regular class was a little intimidating. Computing in Context offered an easier entry point since half was analysis on topics familiar to me. Maybe I wouldn’t be good at the computer science part, but I knew I could do the analysis part.” For her the class was life changing. “I always wanted to do linguistics. In my free time I was testing different language apps and looking for ways to making language learning easier. While taking Computing in Context, I started realizing different ways of manipulating text, that analyzing a text that could be so much easier by computer or writing a computer program. It came together for me in a way that it was both fun and practical.” After graduating with a degree in American Studies, Fylke the next fall enrolled in Hunter College to pursue a degree in Computational Linguistics.
Future of computer science education
The entry of computer science into the liberal arts is still relatively new, but is already responsible for many technological advances: Computational statistical methods applied to linguistics has made accurate and reliable automatic speech recognition possible; network theory applied to social science helps map societal relations and interactions; computational methods for studying the behavior of systems illustrate also how complex biologic interactions arise from collections of cells.
Jenny Ni took her first computer science class as a junior, a bit of late for someone planning to double major in computer science and archaeology. Then again, studying computational archaeology—a field she had not known existed—wasn’t the original plan. But the connection between computation and archaeology soon became obvious as she constantly encountered references to computer programs developed for archaeologists; many were for analyzing GIS and drone data and analyzing images for human habitation.
Now taking data structures, she is embracing computer science. “I liked the logic, and I saw a lot of comparisons between archaeology and computer science in a way I didn’t expect. Levi Strauss’s theory of structuralism, where every object is defined by what it is not, can be visualized as a tree of binary choices: raw/cooked, light/dark, yes/no.” She hopes that she will be able to incorporate computing skills into her senior thesis. “My adviser is working on a rock art project in the Southwest and there is a possibility that drones may be used in mapping the area. I hope to work with drone data in possibly building programs that can handle and organize the data efficiently so that others can search for information they need.”
Liberal arts students have a unique vantage point to imagine what new innovations might be next, and there is a trend as those in computer science look to make connections with those in liberal arts to find problems solvable through computational methods.
Discovering new innovations isn’t the only reason more liberal arts students should study computer science; as researchers and others focus intently on technological advances, others must critically examine whether outcomes are desirable. Advances in artificial intelligence, ubiquitous sensing, and precision medicine—to name only a few—are outpacing people’s ability to understand the legal, social, and ethical implications. Self-driving cars, robots that cause injury or put people out of work, privacy in an age of mass surveillance are all complex issues that require computer-literate lawyers, policy-makers, philosophers, educators, consumer advocates, and ethicists.
Laura Zhang, a philosophy major now in law school, first encountered the world of computer science while helping out at a friend’s startup. She was immediately drawn to the rigorous analysis required for the field, something she missed from her undergrad days studying formal logic and building proofs. As an intern at a legal technology startup, she learned enough Python on the job to contribute simple software components for a program to analyze law firm contracts. She found it tremendous fun. Now enrolled in a data structures class (covered in her law school tuition), she wants to carve out a role advising technology startups, helping them grow while giving business strategy advice the from legal perspective.
“How a lawyer thinks and solves problems is very different from how an engineer thinks and solves problems, and a lot of miscommunication arises when the two sides are not speaking the same language. I feel I could contribute by making programming analogies to explain legal content, and help evaluate the legal risks or difficulty of going down a particular technology path. Best career roles are interdisciplinary. I’m not exactly sure how my skills will fit together, but I know I’m interested in computer science.”
It is those outside computer science who have called attention to algorithms that absorb biases and older stereotypes latent in the data or the programmers themselves. As computers become ever more embedded in all aspects of life, it becomes increasingly important that students from all fields of study understand the basics of computational methods.
It’s not too much of a stretch to imagine that 90% of all nonmajors might some day enroll in at least one rigorous computer science class. As incoming liberal arts students and those in the social and natural sciences see the inroads computational methods are making in their fields, developing computer science skills may be less revolutionary, and more and more the smart thing to do. The current surge may soon be a new baseline, and the new reality for computer science departments.
Part 2: Women and computer science
– Daniel Bauer and Linda Crane