A principle is a statement that guides or constrains action. We used three criteria to screen proposed principle statements: universal, recurrent, broadly influential. It is tempting but misleading to say that principles are invariant. Over time the interpretation of a principle can change; and a principle may become obsolete, outmoded, or irrelevant. (Read more ... )
Big ideas do not automatically qualify as principles. Moore's Law (doubling of transistors on a chip every 24 months) is an example of a widely held idea that is not a principle. The "law" is an empirical relationship with a limited lifetime depending on how soon shrinking feature size passes a limit threshold.
The table below links to PDF files that present the principle summaries we have developed to date. Click on the category name to download the PDF summary. We have also prepared a top-level summary extracting the main principles in each category (View it ... ).
|Computation||These principles address what processes, natural and artificial, are computational, what they can and cannot do, and how we cope with inherent and pervasive computational complexity.|
|Communication||These principles concern the transmission of data with reliable reception.|
|Coordination||These principles concern how autonomous entities work together toward a common result.|
|Recollection||These principles concern how computations store and recall information, and how data layout in the storage system affects their performance.|
|Automation||These principles concern finding efficient computational ways to perform human tasks. Tasks can be mental, such as doing arithmetic, playing chess, and planning schedules, or physical, such as running an assembly line, driving a car, controlling an airplane.|
|Evaluation||These principles concern how computing systems perform under various computational loads and how much capacity they need to deliver their results on time.|
|Design||These principles concern how to design software and computing systems that are dependable, reliable, usable, safe, and secure (DRUSS).|
Although practices are not principles, it is useful to identify the central practices of computing professionals, so as to distinguish from principles. Practices are embodied action patterns that make up someone's skill set. They are sometimes called "know-how", to distinguish from the "know-what" represented in the descriptions of principles. Individuals can be rated at different levels of skill in a practice, such as beginner, competent, and expert. The four core practices of computing are:
Programming (including multilingual programming practice)
Systems and systems thinking
Modeling, validating, testing, and measuring