Abstract
Through my undergraduate thesis, I set out to confront a tension that lies at the heart of computer science education: the disconnect between what students perceive as useful and what truly builds their capacity as software engineers. My technical work focuses on approximation algorithms, a domain where mathematical rigor directly enables practical problem-solving for computationally hard optimization problems. My STS research examines why students increasingly view such mathematical training as irrelevant to software careers, despite evidence that it fundamentally shapes code quality, system design, and professional growth. The approximation algorithms I study represent exactly the kind of mathematically grounded content that students question, while my research reveals why this skepticism exists and what universities, in particular the University of Virginia, must do to address it.
In my technical work, I developed a technical overview of the field of approximation algorithms that covers foundational techniques for addressing NP-hard optimization problems. The writeup presents polynomial-time algorithms that produce near-optimal solutions for problems including minimum vertex cover, the traveling salesperson problem, MAX-3SAT, weighted vertex cover, and knapsack, with each algorithm illustrating a distinct approximation technique. The technical contribution also includes inapproximability results, proving, for instance, that the traveling salesperson problem cannot be approximated within any constant factor unless P = NP, and formal treatments of complexity classes that distinguish problems by their approximability. This material was integrated into CS 4501, Advanced Algorithms and Implementations to give UVA undergraduates sustained exposure to topics previously unavailable in the curriculum.
My STS research investigated the gap between mathematics’ foundational role in computer science and its perceived irrelevance among students and practitioners. Students observe that working software engineers rarely use the theory-heavy topics that are required of them in their coursework, leading them to question why universities emphasize them in the curriculum. Yet research consistently shows that mathematically rigorous training produces measurably better outcomes through fewer code defects, stronger abstractions, and improved system reliability. Mathematics functions as a cognitive infrastructure—not a toolkit for daily tasks, but a foundation shaping how developers reason about correctness, complexity, and design at higher levels. The paper argues that universities cannot abandon this theoretical core in response to market pressures. In particular, the paper examines how the computer science department at University of Virginia lacks sufficient opportunities for higher-level theoretical computational learning, and offers recommendations to address this imbalance through clearer curricular sequences and increased access to advanced courses.
These projects ultimately point to a single conclusion, namely that the divide between theory and practice in computer science is not inherent but constructed through how the discipline is taught and understood. My technical work on approximation algorithms demonstrates that mathematically rigorous ideas directly address real-world problems in optimization, while my STS research shows that their deeper value lies in the ways they shape how engineers think about correctness, tradeoffs, and computational limits. The issue, then, is not that mathematics lacks relevance, but that it is often structurally underemphasized in the curriculum. If universities deprioritize these theoretical foundations, they risk producing graduates who can implement systems but lack the capacity to critically evaluate or advance them. Ensuring that mathematical training remains central, visible, and intentionally integrated is therefore essential not only for individual student development, but for preserving the long-term intellectual depth and innovative potential of computer science as a field.