Last semester, I affiliated as a Computer Science major, finally accepting my blue-light glasses and double monitor life. After filling out all my intended classes for certain requirements and submitting the form, I was more than looking forward to gaining coveted access to the CIS lounge in Rhodes. Hooked by my introductory programming assignments, I loved being given specifications to implement a game or application that could pop up on my phone.
While bugs in my code seemed impossible despite my line-by-line dissection, having a program finally run correctly would mitigate all the head-wracking hours that led up to the triumph. Every problem had its reason — if something wasn’t running correctly, you could pinpoint the exact line where values were being incorrectly set. Problem solving and creative license were the two reasons I decided to bind myself to this major and explore all its possible career paths.
But, after finally getting the email that my affiliation form was accepted and being given the names of my faculty and academic advisors, the computer classes I began enrolling in were not of the same nature as my introductory courses. Introduction to Algorithms showed me the processes we use to schedule events and partition objects, and required a page long explanation about why my solution to a problem was optimal. Digital Logic and Computer Organization forced me to learn how to ground myself before touching an electric board to avoid electrocution, and had me stare at blinking lights for hours on end. While these courses are a pain, and entirely different from the introductory computer science courses that catfished me, there are plausible reasons for why they are a required part of our curriculum.
In Cornell’s defense, becoming a computer science major doesn’t mean that you’re going to be coding for the rest of your life. The study encapsulates much more — from principles behind the algorithms we implement and their efficiency, to programming a light onto a board. We’re exposed to all computer-related topics, software or not.
However, the utility of this exposure — in the form of several core and required classes — is debatable. Arguably the most mainstream career path out of computer science is software engineering, SWE for short. The interviews for a typical software engineer will only include content that has been taught in CS 2110: Object-Oriented Programming and Data Structures, a course that is required to even affiliate with the computer science major. Beyond this, hardware and hardcore algorithms are typically never tested during a technical interview unless the role is out of the ordinary.
Many students come into the computer science major believing that the rest of their college years will be spent similar to the first, coding away on weekly or biweekly assignments and steadily debugging lines of code until test cases are passed. These few programming courses that you take can lead you to affiliate with the major — only for you to find that hardware and algorithms are all that’s left waiting for you. Introductory computer science courses are misleading, and should instead provide a more holistic view of the major and computer engineering, outside of showing you how to code.
Plenty of SWE internships focus less on the content that you learn in class and more on the projects that you have worked on outside the classroom and the skills you’ve picked up on your own time. Oftentimes over school breaks, CS majors can be found creating passion projects from scratch and picking up entire new coding languages and technologies. These types of learning experiences are not commonly found inside the classroom, but they should be.
However, all of this can be disproved by one statement: Software engineering is not the only career path out of computer science. At the end of the day, this major is about more than just working for some big tech company from 9 a.m. to 5 p.m.. There are various other potential career paths, no matter how uncommon they are relative to SWE.
In order to avoid misleading students into affiliating with computer science having only coded, I propose that the computer science department brainstorms a list of concentrations that they require students to pick and choose from. These electives and requirements can then be adjusted accordingly, whether it centers around software engineering or academia. While exposure to different parts of the field is indeed important, this can be done in a more holistic foundational computer science course for first-years and sophomores that teaches more than just coding and debugging. A list of potential concentrations would help focus this already extremely-flexible major. This way, we can feel like more of our courses and electives relate directly to our job search and life after college.
No curriculum will ever be perfect, but the flexibility found in the computer science major causes students to wander into the major under the assumption that they’ll be coding everyday, when really there is much more than that. While Object-Oriented Programming and Data Structures may have catfished me into affiliating with this major, I don’t regret it, but more transparency in the introductory courses would be greatly appreciated.
Jonna Chen is a sophomore in the College of Engineering. She can be reached at [email protected]. jonna.write() runs every other Monday this semester.