Great Principles of Computing

Peter J. Denning, Investigator,
with Craig Martell




Category Narratives
Top-Level Summary
Full Summaries
Representing a Body of Knowledge
Criteria for Choosing Principles
Locality Long Form Story Example
Locality Short Form Story Example
Great Principles Library
FAQ: Frequently Asked Questions
Partner Projects
Reading list

What is Computation?

What is computation?
What can we know through computing?
What can we not know through computing?

Computer scientists have studied these questions since the 1940s.  But today, people in all fields of science, engineering, business, and even politics are asking the same questions.

The tradition that computing is the science of phenomena surrounding computers is being superseded. Computing is -- in fact, always has been -- the science of information processes. Starting around 1995, many scientists began announcing they had discovered natural information processes in their fields. Their discoveries initiated a new tradition: computing is a science of the natural as well as the artificial.

In its older tradition, computing was most naturally described by the ideas in its core technologies -- such as programming, graphics, networks, or supercomputing.  However, the new tradition calls for a description in terms of fundamental principles.  A principles-oriented descriptive framework reveals computing's deep structures and how they apply in many fields.  The framework reveals common aspects of technologies and creates opportunities for innovation.  It opens entirely new ways to stimulate the excitement and curiosity of young people about the world of computing.

In the 1940s, computation was seen as a tool for solving equations, cracking codes, analyzing data, and managing business processes.  By the 1980s, computation had advanced to become a new method in science, joining the traditional theory and experiment.  During the 1990s, computation advanced even further as people in many fields discovered they were dealing with information processes buried in their deep structures -- for example, quantum waves in physics, DNA in biology, brain patterns in cognitive science, information flows in economic systems.  Computation has entered everyday life with new ways to solve problems, new forms of art, music, motion pictures, and commerce, new approaches to learning, and even new slang expressions.

The fundamental questions of computing, listed at the start, have become important in many fields, which rely heavily on computation and computational methods to advance their work.  In fact, studying which aspects of computing are are most useful traditional science fields helps to identify fundamental computing principles.

Computational metaphors have entered the common language with everyday phrases like "I am programmed to react that way," and "My brain crashed and had to be rebooted."  The University of Washington has developed "fluency in information technology", widely used in high schools and colleges to help students learn and apply basic computational principles (see Snyder). Many people now speak of "computational thinking," (e.g., Wing) referring to the use of computational principles in many fields and everyday life.  Computation is everywhere.

There is another advantage to a principles-framework: it's easier to learn than a technology framework. Describing the field in terms of technology ideas was a good approach in the early days when the core technologies were few. In 1989, ACM listed 9 core technologies. In 2001, however, ACM listed about three dozen.  For the newcomer, learning the inner workings of 36 technologies and their 630 possible direct interactions presents a daunting challenge.

In the computing field, we have not yet developed an articulation of the field in terms of fundamental principles.  Principles-based approaches are common in other fields.  Computing has only recently reached a level of maturity where it can do the same.

Project Objectives

The Great Principles project aims to develop and maintain a principles articulation of computing.  The benefits of doing this are:

A principles framework will complement the existing technology frameworks for understanding computing.  We will discuss this further below in the section on using a principles oriented representation of a body of knowledge.

The project is ongoing because the body of principles needs to be constantly updated.  Some principles once ascendant will be retired as they go out of use -- for example, construction of logic gates from discrete transistors.  We will surely discover new principles that will enable the solutions of contemporary issues -- for example, problems with user interfaces, identity theft, network security, spam, information overload, dependable software, hastily formed networks, distance learning, and discovering terrorist plots.  Thus a great principles framework is a living depiction of the field, always open to births and retirements.

Outline of the Framework

By a principle, we mean a statement that guides or constrains future action. Computing principles are of two kinds: (1) recurrences, including laws, processes, and methods that describe repeatable cause-effect relationships, and (2) guidelines for conduct.  An example of a law is that the fastest sorting algorithms take time at least order of n log n to arrange n items in order.  An example of a conduct guideline is that network programmers should divide protocol software into layers.  The purpose of such principles is to reduce apparent complexity, increase understanding, and enable good design.

We analyzed many computing technologies to identify the principles on which they are based, and we studied how what aspects of computation are influencing other fields.  From this, we concluded that computing principles can be grouped into seven categories:

Computation (meaning and limits of computation)

Communication (reliable data transmission)

Coordination (cooperation among networked entities)

Recollection (storage and retrieval of information)

Automation (meaning and limits of automation)

Evaluation (performance prediction and capacity planning)

Design (building reliable software systems)

These categories resulted from a functional analysis of many computing technologies and applications:

  1. Computing systems are built from processing elements that process and store information (computation, recollection);

  2. Processing elements exchange information (communication);

  3. Processing elements cooperate toward common goals (coordination);

  4. Humans delegate tasks to systems of processing elements (automation);

  5. Humans predict the speed and capacity of systems (evaluation); and

  6. Humans decompose systems into processing elements and organize their construction (design).

These categories are like windows into the one computing knowledge space rather than slices of the space into separate pieces.  Each window sees the space in a distinctive way; but the same thing can be seen in more than one window.  Internet protocols, for example, are sometimes seen as means for data communication, sometimes as means of coordination, and sometimes as a means for recollection.

We also found that most computing technologies draw principles from all seven categories.  This finding confirmed our suspicion that a principles interpretation will help us see many common factors among technologies.

This set of categories satisfied our goal to have a framework with a manageable number of categories.  While the list of computing technologies may continue to grow, the number of categories is likely to remain stable for a long time.

A Summary of the Principles

After extensive discussions with computing professionals and students, we drafted a summary of principles in each category.  Each summary consists of a series of main statements expanded by a series of clarifying and deepening points.  We have also composed narrative overviews for each category.  We welcome comments.

View category narratives ...
View top-level summaries ...
View full summaries ...

Using a Principles Oriented Body of Knowledge

There are two basic, useful strategies for representing a field's body of knowledge.  One enumerates the technologies of the field, the other its principles.  They are different interpretations of the same knowledge space.  The different kinds of users -- particularly the interested outsider, the technology designer, and the educator -- can act in new, useful ways with a principles representation.

Read more ...


How do other fields express their principles?  Physicists use terms like photons, electrons, quarks, quantum wave function, relativity, and energy conservation.  Astronomers use terms like planets, stars, galaxies, Hubble shift, and black holes.  Thermodynamicists uses terms like entropy, first law, second law, and Carnot cycle.  Biologists use terms like phylogeny, ontogeny, DNA, and enzymes.  Each of these terms is actually the title of a story!  The principles of a field are actually a set of interwoven stories about the structure and behavior of field elements. They are the names of chapters in books about the field.

Principle-stories seek to make simple the complex history of a complex area.  They tell history, showing how the principle evolved and grew in acceptance over time.  They name the main contributors.  They chronicle feats of heroes and failures of knaves.  They lay out obstructions and how they were overcome.  They explain how the principle works and how it affects everything else. The game is to define many terms in terms of a few terms and to logically derive many statements from a few statements.

Principle stories for computing are still relatively uncommon.  We have many stories tracing inventions and innovations, but not very many tracing the discovery of a principle and its effects on practice.  One of our project objectives is to encourage the telling of principle stories, and place the best of them into a Great Principles Library.  To seed the process, we wrote a story of the principle of locality

Locality long form ...
Locality short form ...

Great Principles Library

A GP library is a collection of materials to support a GP framework.  We are planning a GPL that will be embedded into the ACM Digital Library.

Read more ...

Frequently Asked Questions

We have composed a list of the questions we have received about the framework, and out answers.

Read more ...

Partner Projects

Other groups are investigating related issues.

Computing Unplugged.  Since 1998, a group led by Tim Bell, Ian Whitten, and Matt Fellows at the University of Canterbury in New Zealand has been developing games, exercises, and magic tricks design to excite a young person's curiosity about computing and teach principles in useful ways.  None of their methods actually requires a computer.  Hence the term "unplugged". 

Read more ...

Computing for All.  In 2006, a group led by Lenore Blum at Carnegie Mellon University has offered workshops for high school kids on computational principles such as those used in Unplugged.  They have been joined by groups at University of Washington, UCLA, University of Canterbury. 

Read more ...

Labrats.  The Society of Amateur Scientists, led by Dr Shawn Carlson, has created a scouts-like organization to get young people interested in science and be good at it.  They are developing a national network of chapters.  Their kids create great science fair projects. 

Read more ...


Reading List.  A list of readings that illustrate approaches to science derived from fundamental principles.

Great Principles of Computing.  The first article on the great principles framework.  Published by PJD in Communications of ACM, November 2003.

Great Principles of Computing Curricula.  PJD wrote a summary of the framework and its implementation experience at Naval Postgraduate School for the SIGCSE'04 Proceedings.

Ubiquity Interview: Great Principles.  In February 2004, Ubiquity Editor John Gehl interviewed PJD about the Great Principles framework and its implementation at the Naval Postgraduate School.

The Social Life of Innovation.  Innovation is one of the four practices of computing.  It is the least understood of the four.  Fostering a change of practice in a community is much more difficult than inventing a new technology. The practice of innovation can be learned— once you know what it is.  Published by PJD in Communications of ACM, April 2004.

Ubiquity Interview: Building a Culture of Innovation.  In April 2004, Ubiquity Editor John Gehl interviewed PJD about his framework of innovation.

Innovation as Language Action.  PJD and Bob Dunham present an overview of the seven foundational practices of innovation, which they learned by applying the language-action perspective to stories of innovations.

The Field of Programmers Myth.  The persistent public image of computing as a field of programmers has become a costly myth.  Reversing it is possible but not easy.  Published by PJD in Communications of ACM, July 2004.

Is Computer Science Science?  Computer Science meets every criterion for being a science, but it has a self-inflicted credibility problem.  Published by PJD in Communications of ACM, April 2005.

Perspectives on Computer Science and Engineering.  Paul Rosenbloom wrote a perspective on CS&E that became the theme of a CS department reorganization at USC.  He offers a model of the relationships of implementing, interacting, and embedding between CS and other fields of science; and a layered model of the architecture and systems issues studied by computer engineers.  It complements the framework proposed by PJD, which focuses on the internal structure that supports both CS and CE.

Computational Thinking.  Computational ways of thinking pervade many fields and everyday life.  Jeanette Wing gives many examples in her article in Communications of ACM, March 2006.

Computing is a Natural Science.  Scientists in biology, physics, and other fields have discovered natural information processes in their fields.  This removes any doubt about whether computing deals with natural phenomena.  It confirms that computing is -- always has been -- a natural science as well as an engineering field.  Published by PJD in ACM Communications, July 2007.

Ubiquity Interview: Great Principles of Computing.  Ubiquity Editor John Gehl interviews PJD again (previously in February 2004) about the progress of the Great Principles Project.  He discusses the claim that computing is a natural science.