Opinion
Computing Profession Viewpoint

Wanted: Toolsmiths

Seeking to use software, hardware, and algorithmic ingenuity to create unique domain-independent instruments.
Posted
  1. Article
  2. References
  3. Author
  4. Footnotes
Wanted: Toolsmiths, illustration

"As we honor the more mathematical, abstract, and `scientific’ parts of our subject more, and the practical parts less, we misdirect the young and brilliant minds away from a body of challenging and important problems that are our peculiar domain, depriving these problems of the powerful attacks they deserve."

—Fredrick P. Brooks, Jr.
Computer Scientist as Toolsmith II2

I have the privilege of working at the Defense Advanced Research Projects Agency (DARPA) and currently serve as the Acting Director of the Defense Sciences Office (DSO). Our goal at DARPA is to create and prevent technological surprise through investments in science and engineering, and our history and contributions are well documented. The DSO is sometimes called "DARPA’s DARPA," because we strive to be at the forefront of all of science—on the constant lookout for opportunities to enhance our national security and collective well-being, and our projects are very diverse. One project uses cold atoms to measure time with 10−18th precision; another is creating amazing composite materials that can change the way in which we manufacture. We have other programs that aim to reinvent synthetic chemistry, and we even have one program that attempts to reimagine the entire process of scientific discovery itself.

Nearly all of our projects in the Defense Sciences Office are using computing and data to transform our view of fundamental scientific questions. Computation has become the most important tool for reimagining scientific problems since the advent of calculus and codification of the scientific method over 300 years ago. This observation has been made several times over the past decade, from a major issue of Nature7 in 2006 to the major report by the Computing Community Consortium4 in 2016. But, as I look across the people working on all of these and other exciting DSO projects, where are all of the computer scientists? I am actually kind of lonely.

This loneliness has led to a concern that the field of computer science (in particular computer science education) might have a growing problem. In this new wave of interest in computing we may be unintentionally "misdirect[ing] the young and brilliant minds" away from important, use-inspired problems. In Fred Brooks’ Newell Award lecture over 20 years ago, entitled "Computer Scientist as Toolsmith,"2 Brooks notes that "a scientist builds in order to study." As computer scientists we build algorithms and software systems of various kinds in order to study. Yet, in spite of the expanding set of interdisciplinary opportunities for computer scientists to reimagine with our tools, too few of us venture to build tools in foreign territory and we certainly do not teach the interdisciplinary thinking to our undergraduate computer science students.

I have grown concerned that our educational priorities as a discipline are misplaced. We focus on training students to become productive software developers, which is driven by the current availability of lucrative jobs. Hence, when they complete their education, most students’ experience of computing is limited to what they have encountered in the classroom or their personal life. Employers hand them existing problems or they work on things they know (such as games or social media). The hard and complex problems of scientific, engineering, societal, or national security importance are rarely used to inspire students, let alone to seriously shape curricula, at the undergraduate level.

We need a renewed emphasis on the study of computing phenomena in the physical world and stronger call to service to address issues of societal need. Consider that Hilbert’s Tenth Problem inspired Turing’s theoretical specification of a computing machine. The needs of ballistics experts at the Aberdeen Proving Ground and Manhattan Project scientists wrestling with neutron propagation and explosive "lenses" motivated the need for ENIAC, MANIAC and calculating machines. Computer graphics emerged from the Semi-Automatic Ground Environment (SAGE), a system designed for Cold War air defense. Some readers might recall that the protocols that became the basis for the World Wide Web were developed specifically to help physicists at CERN share scientific data. Many mainstream computer science subject areas today were born from computing scientists working with domain scientists to build the tools needed to solve specific problems within a non-computing domain.

I love Brooks’ vision of the computer scientist as the toolsmith, in which we use software, hardware, and algorithmic ingenuity to create unique instruments. We should make no restriction on what domain those instruments are for. Academic computer science should embrace this broader charter as toolsmith regardless of the domain of inquiry. But what constitutes a legitimate computer science problem, as opposed to "merely an application" for a given discipline? Creating novel algorithms driven by specific needs of material scientists is as much a computer science problem as a new machine learning technique—provided the algorithms or data structures are truly novel from a computer science view and not "merely" an application of an existing idea to the materials problem. This is a use-inspired6,8 vision that goes beyond what might today be called "scientific computing" to include the engineering, systems, and national-security related challenges in which computing is vital.

There is a vast opportunity for innovation at the intersection of computing and various disciplines, where we might transform longstanding domain-specific problems using algorithmic thinking. Students and educators do not need to look far to find potential topics for disruption. A report like the National Academies’ Grand Challenges for Engineering in the 21st Century3 provides 14 civilization-changing challenge problems, the solution to each of which will certainly involve computing. For example, the grand challenge of "Advancing Health Informatics" as a case study. The medical domain has been strangely intertwined with computing over the last half-century mostly due to intrepid health and life scientists who sought out computing as a solution to their challenges. Seminal work in AI planning and knowledge representation came out of medical schools; medical imaging challenges created fertile ground for machine vision, among many other issues. Now we are seeing the digitization of the entire healthcare industry, thanks to the push for electronic health records and various healthcare delivery mechanisms. This is not merely an IT deployment challenge, but one of creating an ecosystem of humans and machines to deliver healthcare—and computer science will play a central role as the tool builders that enable us to reimagine this system. Will the innovations come from computing sciences or elsewhere?

At DARPA we have several programs under way that reimagine longstanding problems using computation, including projects in nuclear security (SIGMAa), engineering design (TRADESb), and applied mathematics (CASCADEc)—to name just three, as there are others—all with central computer science challenges. But the issue remains that there are few computer science departments in the country that would look at these topics as central to the discipline of computing. As a discipline we are exceptionally good at teaching software development and theory, but not as good on the use of computational imagination to address such wicked problems.

Perhaps we should work toward a broader view of computing, one that can follow from computing intertwined with use-inspired problems being reimagined as computational ones. To this end, I suggest three rubrics that can be used to extract basic computer science questions from interdisciplinary problems or those that some might consider to be mere applications.


Academic computer science should embrace this broader charter as toolsmith regardless of the domain of inquiry.


  • Representation and reasoning: The opening quotation in the famous algorithms text book of Aho, Hopcroft, and Ullman1 states that "Computer Science is a science of abstraction—creating the right model for a problem and devising the appropriate mechanizable techniques to solve it." A standard exercise in many an `Introduction to AI’ class is the eight queens problem. Represent the problem in the naive way and the solution can take hours; a clever representation results in an instant solution for vastly larger problems. For any domain, representation of the problem and the structures used to solve it is the fundamental issue. Across the landscape of those who use software and computing, many are suffering with outmoded or inappropriate representations. Developing new representations, however, requires that computing scientists embed with the domain scientists and transform these disciplines’ issues into digital abstractions.

For those looking for such challenges, consider materials science and engineering, highlighted in recent years by the Materials Genome Initiative (MGI) in the United States. MGI promises to transform materials and manufacturing science from the methods of handbooks and tables to one of direct computational design from functional requirements. Key to achieving this vision is the development of new data structures for representing materials across multiple scales (literally from the scale of atoms to the scale of products); representations of uncertain and sparse data (that is, data from physical tests and simulations is only a tiny fraction of the universe of possible materials); and new modeling paradigms that let designers reason about new materials possibilities. Developing effective data structures will require computer scientists working with materials scientists to understand their problems and how to best represent them.

  • Innovation by Algorithm: We praise and cite those who can produce a better algorithm for a known problem. How about those who can define new problems and, thus, new algorithms? Venturing into a domain, capturing and bringing back "wild" problems suitable for algorithmic study is not adequately awarded. Hence, the computing problems driven by scientific domains are often developed by the domain scientists, not the computer scientists. This gives rise to an obvious question: Are we sure these are the best algorithms for the tasks at hand? If our answer is yes, then we have a problem: either all domain-driven problems are trivial (very unlikely) or expert algorithms can be developed by nearly anyone without formal computer science training, and our discipline is extraneous. Clearly, there is a big opportunity for domain-driven algorithmic thinking and a need for the broader computer science community to embrace scientific problems and engineering opportunities. Should we fail to do so, we contribute to a balkanization of computing, in which computing is reimagined within each scientific community by non-experts in computing sciences.

A great example of algorithmic innovation comes from DARPA’s MAKE-IT,d a program that is reimagining the process of synthesizing chemical reaction pathways into a search algorithm. The key insight of MAKE-IT is that chemical reactions can be viewed as nodes in a directed graph: given certain precursor compounds, a reaction produces certain chemical products. New kinds of search algorithms will enable chemists to find new and better methods of producing important compounds.

  • The human-machine symbiosis:5 Computing over the decades has been focused on understanding computing machinery, building it, controlling it and understanding the consequences. A computer, or piece of software, is principally a device that enables a person to do a job, usually an existing job, perhaps in a better manner than before. As electronic spreadsheets have largely replaced accountants’ physical ones, the human-centric task has evolved but not fundamentally changed. Computing machinery is now poised to go beyond just assisting with human problems—it enables us to fundamentally rethink them. This is seen across science and engineering domains in a particularly pointed way: progress has become intimately tied to computation and data.

What other disciplines can we disrupt with computational tools that augment our intelligence?


As this scientific revolution unfolds we are witnessing a shift from merely computational methods (for example, computer as calculator) to those in which humans and machines are partners. Over a decade ago, the Sloan Digital Sky Survey enabled astronomers to pose questions that were previously impossible to answer. Currently, DARPA is working to advance machine reading under our Big Mechanisme program with the goal of having computers that can help scientists harvest vast collections of experimental results and produce a shared human-machine understanding of certain cancer pathways. An emerging challenge is to consider how problems can be broken up and distributed across human-machine teams in order to exploit the power of silicon-based machines while optimizing the insight and creativity of the carbon-based ones. What other disciplines can we disrupt with computational tools that augment our intelligence?

The computer scientist is the toolsmith that enables domain scientists and engineers to reinvent and reimagine their disciplines as algorithmic or information-centric. However, if computing really is going to be the new framework for scientific discovery and engineering innovation, we—the computer scientists—need to support this kind of interdisciplinary study among students as well as evangelize the unconverted. Sometimes we might find those outside computing with a "not invented here" bias—we need to meet them halfway or more than halfway. Sometimes we may find disciplines are not as much converted to computing, as they are becoming assimilated under the assault of ideas from computing. Scientific disciplines are refactoring key problems around systems for vast data and computation, and computer scientists should be working deeply with these domain scientists and engineers to bring about revolutions.

Many of the most important problems facing the U.S. and the world today represent a call to service similar to that which began during the Second World War, when many of the best and brightest minds (mostly physicists) in the country put commercial or academic interests on hold and dedicated themselves to innovations in service of national need. Students—pulled by the lure of the Apollo program or the needs of the Cold War—pursued careers of national service in science and engineering in order to solve big problems.

I would love our best and brightest computer science students to feel that pull now, and have the opportunity to be captivated by these major interdisciplinary challenges. But with the current din of opportunities, we must work harder to instill the passion for such service. Computing is no longer a new discipline and is well into adolescence—it needs to make some decisions about what it really wants to be when it grows up. Rather than just disrupting industries and creating the next great mobile app, I long for an expanded view of what constitutes legitimate computer science inquiry and for increased scientific citizenship.

Back to Top

Back to Top

Back to Top

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More