For first-year me, computer science meant an erasure of individual identity behind lines of identical code and rows of seats in giant lecture halls. As someone who values abstract concepts and planned to concentrate in the humanities, CS seemed too dry and too concrete — like it would trap me in useless scattered details before I could truly understand what I was learning. So from the moment I set foot on College Hill, I told myself I would never do computer science. Not until this fall, my third semester at Brown, did I step into the lecture hall of the notoriously difficult introductory course, CSCI 0150: “Introduction to Object-Oriented Programming and Computer Science,” by the persuasion of friends and an unavoidable concentration requirement.
Now, as the semester draws toward an end, I find myself enjoying the class and would recommend students outside of the department to give it a try. Despite my initial reservations, my CS experience has been surprisingly rewarding, since it imparts a refreshing concreteness to otherwise theoretical concepts. While the introductory CS courses are undoubtedly challenging, the sense of accomplishment gained from small moments of success and the supportive community make them an appealing choice for humanities students — especially those who are looking for a more practical change of pace. Still, there are persistent problems that stem from large class sizes, which may deter students from taking a CS course in the first place, that the Department of Computer Science must address.
Many classes that I took in my first year, like art history or philosophy, required an abstract mindset focused on finding big-picture patterns over nitpicking details. In art history, for instance, though I thoroughly enjoyed the class, I couldn’t understand how concepts like verisimilitude could apply to my real-world experiences. While these sorts of discussions taught me crucial analytical skills and at times fundamentally changed the way I understood the world around me, their abstraction made me constantly doubt their purpose and ability to create tangible change. CS, on the other hand, is practical — really, really practical. This practicality, which once made me avoid it at all costs, is now my primary reason for enjoying it.
Programming requires meticulous attention to both abstract design and detail. After wrestling with an incredibly simple bug for two hours on my first project, I found myself beginning to enjoy the detail-oriented aspect of the class. I enjoy seeing that every abstract concept discussed in class lands on concrete implementations working in real-time, right in front of me. CS has the direct real-world connections that I am still searching for in many other areas of study, making it a welcome change for any mind that has grown tired of unraveling theory.
CS also gives me a strong sense of accomplishment from being able to bring my designs to life. My fondest memory from the class is sitting on the overcrowded CIT floor with my project partner, watching my Doodle Jump start bouncing up and down for the first time, mesmerized by the simple animation that brought life to the game. For someone who constantly falls into self-doubt and questions the authenticity of most affirmations, these small increments of success in CS are extremely validating. The bright pixels on the pop-out screen offer a solid, unquestionable affirmation to my improving coding skills: You did it. You made it work.
Finally, the teaching assistants in CS make up a welcoming and supportive introductory course community. Like many students enrolled in a computer science course, I am incredibly grateful for the amazing TAs who do everything from course planning to offering individual help. That I found a sense of community within a 330-student class can be largely credited to the TAs, who perform in-class skits illustrating CS concepts, mentor students in navigating the Brown CS curriculum and patiently answer my poorly-formulated questions at conceptual hours. They are truly the saviors of my CS experience.
There are, of course, other times when the sheer size of the class becomes overwhelming. These are the moments when my project partner and I spend five hours on a supposedly simple function but still cannot make it work, and the line for debugging hours is more than two hours long. Since the TAs are usually the ones standing between the students and the feeling of isolation and loss, once they are swamped by their workload, the students can truly begin to feel invisible. While these moments don’t happen often, the panic that they provoke can be enough to discourage a student from continuing to take courses in the department.
To provide more individual help and aid retention in CS courses, Brown’s current solution is to hire more TAs. But as a previous Herald opinion piece pointed out, more TAs cannot change structural problems like large classes and insufficient instructors. These issues leave students in want of guidance not only about course material, but also about all things CS-related outside the classroom — guidance which the TAs can scarcely offer. To make more students feel comfortable trying CS for the first time and discovering its beauty, the department needs to find ways to ensure students can get more individual attention without completely relying upon the TAs.
So far, it is unclear whether the CS department has started to do so. Next semester, two popular second-level CS courses, CSCI 0160: “Introduction to Algorithms and Data Structures” and CSCI 0180: “Computer Science: An Integrated Introduction,” will be merged together for the first time. This would create a class of possibly more than 500 students. This choice was made after the two instructors for the previous two courses realized the similarity between their content and decided to combine them into one course which could be offered every semester, possibly providing more flexibility for prospective students.
Like many students, I am uncertain how the enormous size of the class will impact the amount of individual help available. Done with care, this could be the department’s chance to show that it values a student’s individual experience in its introductory sequence. If not, the department will only exacerbate its reputation for enormous class sizes and limited guidance. Either way, you will soon see me in CSCI 0200: “Program Design with Data Structures and Algorithms,” putting my newfound passion for CS to the test.
Joyce Gao ’24 can be reached at firstname.lastname@example.org. Please send responses to this opinion to email@example.com and op-eds to firstname.lastname@example.org.