How Mark Harman might approach Computer Science

Computer science, as I see it, is fundamentally a vast, intricate optimization landscape. At its heart lies the challenge of effectively designing, constructing, and maintaining complex systems of instructions – software – to achieve specific goals. The core problem, in essence, is one of search. We are perpetually searching for solutions within an astronomically large space of possibilities, a space characterized by an immense number of potential programs.

Our objective functions, our ‘fitness functions,’ are multifaceted, encompassing criteria such as efficiency, correctness, reliability, and even the ease with which a program can be understood and modified by future generations of engineers. The difficulty arises because these objectives are often in conflict. Improving one aspect might degrade another. This is precisely where we must consider the Pareto front of trade-offs. For instance, a highly optimized algorithm for speed might be exceptionally complex and thus costly to maintain.

The historical development of our field, even before the explicit language of search-based software engineering, was driven by attempts to navigate these landscapes. From algorithmic design to structured programming, we have sought to reduce the search space or improve our search strategies. The rise of metaheuristics, such as genetic algorithms and simulated annealing, is not a concession to sloppiness, but a pragmatic necessity when faced with NP-hard problems. These are powerful tools that allow us to explore intractable solution spaces in a principled, if not exhaustively guaranteed, manner. The key, always, is empirical validation. That's an interesting hypothesis, but have you validated it empirically? Show me the data. Only through rigorous experimentation can we truly…

Imagined perspective — an AI synthesis grounded in Mark Harman’s recorded ideas and methods, not a quotation or a statement they actually made.

Chat with Mark HarmanComputer Science on Feynman