William Pugh (computer scientist)

Last updated
Bill Pugh
Born (1960-06-14) June 14, 1960 (age 60)
Alma mater Cornell University
Known for Skiplist, FindBugs
Scientific career
Fields Computer Science, Software Engineering
Institutions University of Maryland, College Park
Thesis Incremental computation and the incremental evaluation of functional programs  (1988)
Doctoral advisor Ray "Tim" Teitelbaum
Website www.cs.umd.edu/~pugh/

William Worthington Pugh Jr. (born 1960) is an American computer scientist who invented the skip list and the Omega test for deciding Presburger arithmetic. He was the co-author of the static code analysis tool FindBugs, and was highly influential in the development of the current memory model of the Java language. Pugh received a Ph.D. in computer science, with a minor in acting, from Cornell University.

In 2012 he became professor emeritus of the University of Maryland's department of computer science in College Park. He is on the technical advisory board for the static analysis company Fortify Software.


Related Research Articles

Programming language Language for communicating instructions to a machine

A programming language is a formal language comprising a set of instructions that produce various kinds of output. Programming languages are used in computer programming to implement algorithms.

Static program analysis is the analysis of computer software that is performed without actually executing programs, in contrast with dynamic analysis, which is analysis performed on programs while they are executing. In most cases the analysis is performed on some version of the source code, and in the other cases, some form of the object code.

In computer science, abstract interpretation is a theory of sound approximation of the semantics of computer programs, based on monotonic functions over ordered sets, especially lattices. It can be viewed as a partial execution of a computer program which gains information about its semantics without performing all the calculations.

In computer science, program analysis is the process of automatically analyzing the behavior of computer programs regarding a property such as correctness, robustness, safety and liveness. Program analysis focuses on two major areas: program optimization and program correctness. The first focuses on improving the program’s performance while reducing the resource usage while the latter focuses on ensuring that the program does what it is supposed to do.

In programming languages, a type system is a logical system comprising a set of rules that assigns a property called a type to the various constructs of a computer program, such as variables, expressions, functions or modules. These types formalize and enforce the otherwise implicit categories the programmer uses for algebraic data types, data structures, or other components. The main purpose of a type system is to reduce possibilities for bugs in computer programs by defining interfaces between different parts of a computer program, and then checking that the parts have been connected in a consistent way. This checking can happen statically, dynamically, or as a combination of both. Type systems have other purposes as well, such as expressing business rules, enabling certain compiler optimizations, allowing for multiple dispatch, providing a form of documentation, etc.

John Hopcroft

John Edward Hopcroft is an American theoretical computer scientist. His textbooks on theory of computation and data structures are regarded as standards in their fields. He is the IBM Professor of Engineering and Applied Mathematics in Computer Science at Cornell University.

Static analysis, static projection, or static scoring is a simplified analysis wherein the effect of an immediate change to a system is calculated without regard to the longer-term response of the system to that change. If the short-term effect is then extrapolated to the long term, such extrapolation is inappropriate.

Jeffrey David Ullman is an American computer scientist and the Stanford W. Ascherman Professor of Engineering, Emeritus, at Stanford University. His textbooks on compilers, theory of computation, data structures, and databases are regarded as standards in their fields. He and his long-time collaborator Alfred Aho are the recipients of the 2020 Turing Award, generally recognized as the highest distinction in computer science.

Monica Sin-Ling Lam is an American computer scientist. She is a professor in the Computer Science Department at Stanford University.

Patrick Cousot French computer scientist

Patrick Cousot is a French computer scientist, currently Silver Professor of Computer Science at the Courant Institute of Mathematical Sciences, New York University, USA. Before he was Professor at the École Normale Supérieure (ENS), Paris, France, the École Polytechnique, Palaiseau, France and the University of Metz, France and a Research Scientist at the French National Center for Scientific Research (CNRS) at the Joseph Fourier University, Grenoble, France.

FindBugs

FindBugs is an open-source static code analyser created by Bill Pugh and David Hovemeyer which detects possible bugs in Java programs. Potential errors are classified in four ranks: (i) scariest, (ii) scary, (iii) troubling and (iv) of concern. This is a hint to the developer about their possible impact or severity. FindBugs operates on Java bytecode, rather than source code. The software is distributed as a stand-alone GUI application. There are also plug-ins available for Eclipse, NetBeans, IntelliJ IDEA, Gradle, Hudson, Maven, Bamboo and Jenkins.

Thomas J.R. Hughes American engineer

Thomas Joseph Robert Hughes is a Professor of Aerospace Engineering and Engineering Mechanics and currently holds the Computational and Applied Mathematics Chair III at the Oden Institute at The University of Texas at Austin. Hughes has been listed as an ISI Highly Cited Author in Engineering by the ISI Web of Knowledge, Thomson Scientific Company.

Joseph Sifakis

Joseph Sifakis is a Greek-French computer scientist with French citizenship, laureate of the 2007 Turing Award, along with Edmund M. Clarke and E. Allen Emerson, for his work on model checking.

João Arménio Correia Martins Portuguese engineer

João Arménio Correia Martins was born on November 11, 1951 at the southern town of Olhão in Portugal. He attended high school at the Liceu Nacional de Faro which he completed in 1969. Afterwards João Martins moved to Lisbon where he was graduate student of Civil Engineering at Instituto Superior Técnico (IST) until 1976. He was a research assistant and assistant instructor at IST until 1981. Subsequently, he entered the graduate school in the College of Engineering, Department of Aerospace Engineering and Engineering Mechanics of The University of Texas at Austin, USA. There he obtained a MSc in 1983 with a thesis titled A Numerical Analysis of a Class of Problems in Elastodynamics with Friction Effects and a PhD in 1986 with a thesis titled Dynamic Frictional Contact Problems Involving Metallic Bodies, both supervised by Prof. John Tinsley Oden. He returned to Portugal in 1986 and became assistant professor at IST. In 1989 he became associate professor and in 1996 he earned the academic degree of “agregado” from Universidade Técnica de Lisboa. Later, in 2005, he became full professor in the Department of Civil Engineering and Architecture of IST.

Peter OHearn Research scientist

Peter William O'Hearn is a research scientist at Facebook and a Professor of Computer science at University College London (UCL). He has made significant contributions to formal methods for program correctness. In recent years these advances have been employed in developing industrial software tools that conduct automated analysis of large industrial codebases.

(Ray) Tim Teitelbaum is an American computer scientist known for his early work on integrated development environments (IDEs), syntax-directed editing, and incremental computation. As an educator and faculty member of the Cornell University Computer Science Department since 1973, he was recognized for his large-scale teaching of introductory programming, and for his mentoring of highly successful graduate students. As a businessman, he is known for having co-founded GrammaTech, Inc. and for having been its sole CEO from 1988 to 2019.

Radhia Cousot Inventor of abstract interpretation

Radhia Cousot was a French computer scientist known for inventing abstract interpretation.

David John Hickson was a British organizational theorist and Emeritus Professor of International Management and Organization at the Bradford University School of Management, known for his work in the field of organisational development (OD).

Dawson R. Engler is an American computer scientist and an associate professor of computer science and electrical engineering at Stanford University.

Static application security testing (SAST) is used to secure software by reviewing the source code of the software to identify sources of vulnerabilities. Although the process of statically analyzing the source code has existed as long as computers have existed, the technique spread to security in the late 90s and the first public discussion of SQL injection in 1998 when Web applications integrated new technologies like JavaScript and Flash.