Concepts

ConceptsWe live in a world exquisitely dependent on computing, with artifacts that range from the profoundly simple to the staggeringly complex. Nonetheless, its fundamental concepts are still within the grasp of every person touched by its possibilities.

Abstraction, algorithms, decomposition, and patterns are at the center of computational thinking. Here you'll find these and other concepts that are part of computing's foundations.

Abstraction
An abstraction is a general model of a specific thing. As a noun, an abstraction is a conceptual or material simplification of an object or an action; as a verb, abstraction is the mental process that focuses on that object or action, considers how it might be seen or used from a particular point of view, and then presents only those properties that are essential to that point of view while hiding everything else. Abstraction is important because it is the primary mechanism whereby we manage complexity; without abstraction, one figuratively cannot see the forest for the trees.
Algorithm
An algorithm is a series of actions that solves some problem. An algorithm executes one step after the other, sometimes taking a different path depending on current conditions (branching), sometimes repeating (looping or recursion), and sometimes in parallel with other steps (concurrency). An algorithm starts with some initial state and as a consequence of reacting to some input may yield an output and a new state. Once an algorithm completes all its actions, it stops. Algorithms are important because they specify exactly how to solve a problem. In fact, a problem is considered computable if and only if there is an algorithm for it.
Analog
Analog information is data drawn from a range of continuous values, such as the position of the shadow of a sundial; an analog computer is one that can directly process analog information. Analog information is important because it is the nature of the real world.
Artificial Intelligence
Artificial intelligence (AI) is a branch of computing that seeks to build systems that mirror human intelligence. Artificial intelligence is important because it leads us to advance the expressive power of computational systems while it simultaneously compels us to consider what it means to human.
Augmented Reality
Augmented reality (AR) is a computationally expanded experience of reality. Augmented reality is important because it amplifies human perception and knowledge.
Bekenstein Bound
The Bekenstein bound is the theoretical limit as to the amount of information that can be stored in a given volume. The Bekenstein bound is important because it helps us understand the limits of computing.
Binary Number
A binary number is a value expressed in base two (binary) using the symbols zero (0) and one (1). Binary numbers are important for three compelling reasons: boolean algebra provides a very expressive and theoretically sound mechanism for conducting deterministic arithmetic and logical operations; binary logic is easily and economically implemented at scale and at speed by physical systems that are insulated from the noise and uncertainty of the real world; they are easily and unambiguously mapped to semantics that are only limited by our imagination in the context of computational thinking.
Boolean Algebra
Boolean algebra provides the theoretical foundation for conducting operations associated with binary values. Boolean algebra is important because it provides a very expressive and theoretically sound mechanism that unites the semantics of binary numbers with their practical manipulation via logic gates.
Bug
A bug is a flaw in a computing system. Bugs are never desirable, but they are important in the sense that every complex system has them.
Central Processing Unit
A central processing unit (CPU) is the primary component of a computer responsible for arithmetic calculations, logical operations, and the orchestration of a computer’s memory and input/output resources. A computer’s CPU is the place where algorithms specified by software are executed. CPUs are important because they are the soul of a machine; they are the place where hardware and software meet to carry out a computer’s instructions. A GPU (graphics processing unit) is special kind of processor, optimized for the parallel execution of mathematical operations as required for image processing and artificial neural networks.
Cloud Computing
Cloud computing is a network architecture that places resources in a heterogeneous, shared, elastic, and distributed physical grouping, creating an abstraction for clients of there being abundant and unified computational power and storage. Cloud computing is important because it brings economies of scale to complex, distributed systems.
Complexity
Complexity is a measure of the simplicity of a thing: the greater the number of parts, the degree to which those parts are different from one another, the more and irregular ways those parts interact, the difficulty of implementing each part and their behaviors, and the emergence of behaviors that are greater than the sum of the parts, all contribute to increasing that thing’s complexity. Complexity is important because gives us a way to measure how hard a problem is to solve: some problems are easy, many are hard, a few are very hard, others are wickedly hard, and certain ones are computable but intractable.
Compression
Compression is the encoding of information while reducing the size of the data necessary to express that information. Compression is important because it serves to reduce the bandwidth necessary to transmit and store information
Computability
Computability is the ability of a function to be executed by an algorithm. If no such algorithm exists, the function is considered uncomputable. Computability is important because it gives us a theoretical foundation for the limits and the limitlessness of computing.
Computational Thinking
Computational thinking is a way of thinking about things in a manner that can be implemented on a computer. Computational thinking is important because it helps us make our imagination manifest; computational thinking is also important because it gives us a way to understand the cosmos.
Computer
Originally, a computer was a person (usually a woman) who did arithmetic calculations. Now, a computer is any device capable of executing an algorithm. A computer can take many forms - electronic, electromechanical, mechanical, even organic - because computability is universal as described theoretically by a Turing machine. Pragmatically, most contemporary computers are von Neumann machines (whose main components are a central processing unit, memory, and input/output) which are also stored-program devices (meaning that their algorithms are are written in a programming language and stored in memory for execution). Computers are important because they are the physical platform on which we implement computable systems.
Computer Architecture
Computer architecture represents the structure and organization of a computer’s hardware. Computer architecture is important because it yields a computer or a class of computers that is optimal for its intended use.
Computing
Computing is the human endeavor that approaches the cosmos from the belief that it is computable. Computing is important because it impacts every element of civilization; it makes it possible to extend our bodies and augment our minds; it compels us to consider what it means to be human.
Concurrency
Concurrency represents the simultaneous execution of two or more actions. Concurrency is important because it is an important mechanism for orchestrating the computing resources of systems at scale.
Data Structure
A data structure is a morphology of information, representing the organized relationships among individual chunks of data together with well-defined rules for creating, destroying, manipulating, and traversing those relationships. Data structures are important because they give us a mechanism for modeling information at higher levels of abstraction.
Database
A database is a persistent, organized, and managed body of information. Databases are important because they provide an essential abstraction for large bodies of persistent information.
Decomposition 
Decomposition is the activity of taking a complex problem and breaking it into smaller, less complex parts. Decomposition is important because it helps us shape abstractions that have a good separation of concerns from one another, making each simpler and crisper. Decomposition is important because it gives us a way to take complex algorithms and break them into smaller, more manageable parts.
Deterministic System
A deterministic system is one whose output is completely determined by its initial state and its inputs together with the rules - free of any uncertainty or randomness - that define its behavior. Deterministic systems are important because they give us predictability and repeatability in our computing systems.
Digital
Digital information is data drawn from a range of discrete values, such as the data associated with an audio signal streamed across the internet or the quantization of energy according to the laws of physics; a digital computer is one that can directly process digital information. Digital information is important because it is well-suited for the representation of symbolic systems, is good enough to map to analog systems, and can be processed in deterministic, repeatable, reliable, economical, and simple ways.
Distributed Computing
Distributed computing relates to systems that encompass networks of multiple computers. Distributed computing is important because it is the foundation for delivering useful systems at scale.
Embedded Computing
Embedded computing concerns systems that stand alone or that live on the edge of a network, physically an essential part of a device, a space, or a person. Embedded computing is important because, of all the billions upon billions of computers in the world, they are the most common, yet the most invisible.
Encryption
Encryption is the mapping of data from one representation to another in a manner that preserves information while simultaneously obscuring it from anyone without access to the decryption key. Encryption is important because it keeps information at rest as well as information in motion private.
Hardware
Hardware is the physical platform on which a computer executes an algorithm. Hardware is important because it the place that brings software to life.
Information
Information is data with meaning; information is also measure of entropy, wherein the less uncertainty, the greater the information content. Information is important because it provides the theoretical underpinning of all of computing.
Input/Output
Input/Output (I/O) is the information external to a computer with which it interacts, together with the paths of communication whereby that information is delivered to and from the device. Input/Output is important because it is the means by which a computer touches the world; without I/O, a computer would be a barren island in the middle of a vast ocean, isolated and irrelevant.
Integrated Circuit
An integrated circuit is a complex electronic circuit etched on a semiconductor substrate. Integrated circuits are important because they are central to building better, faster, and cheaper computers.
Logic Gate
A logic gate is a conceptual or physical realization of a Boolean operation. Logic gates are important because they serve as the foundational circuitry of all digital computers.
Machine Learning
Machine learning is a branch of artificial intelligence associated with systems that are not programmed, but rather are taught or that learn. Machine learning is important because it opens up ways for us to deliver complex systems that improve over time, without human intervention.
Mainframe
A mainframe is a category of computers that provide a high number of transactions per second with extreme availability and reliability. Mainframes are important for they are essential for solving certain classes of problems that require data integrity, such as in financial dealings and online retail operations.
Malware
Malware is software with evil intent. Malware is important because it compels users and developers to remember that computing is an imperfect technology that operates in an imperfect world. 
Memory
Memory is the mechanism whereby a computer retains the state of its programs and its data. Memory is important because it represents the canvas on which a computer processes information.
Metcalf’s Law
Metcalf’s law is the observation that the value of a network is proportional to the square of the number of users. Metcalf’s law is important because it helps us understand the value of computing at scale.
Microcomputer
A microcomputer is a category of computers with minimal computational resources. The term microcomputer was dominant in the 1970s and 1980s; today, the term has largely been superseded by the terms microcontroller (for single-chip and single-board computers with simple sensors and actuators) and personal computer (which have greater computational resources and are intended for use by an individual consumer). Microcomputers are important because they represent low cost, low power commodity end points in the computing fabric, often used as embedded programmable devices.
Minicomputer
A minicomputer is a category of computers whose performance lands between that of a microcomputer and a mainframe. The term minicomputer was dominant in the 1960s and 1970s; today the more commonly used term is mid-range computer. Minicomputers/mid-range computers are important because they represent an important price/performance point in the computing fabric.
Moore's Law
Moore’s law is the observation that the number of transistors in an integrated circuit doubles every 18 to 24 months. Moore’s law is important because it gives us a guidepost to progress in semiconductor manufacturing, as well as a compelling goal for which to drive.
Moravec’s Paradox
Moravec’s paradox is the observation that sensiomotor behaviors require significant computational resources, while high-level cognitive functions require relatively few. Moravec’s paradox is important because it makes us humble in our journey for computing (realizing that easy things are very hard while hard things are much easier) and it compels us to better understand what it means to be human.
Network
A network is the communications infrastructure whereby individual computers connect to one another. Networks are important because they amplify the computational power of individual computers by providing the abstraction of a fabric on which they may collaborate.
Neural Network
A neural network is a connectionist model of computation, inspired by the structure and behavior of biological neurons. Neural networks are important because they are particularly efficient for problems that are difficult for symbolic models of computation (problems such as classification and non-linear regression analysis) and because they mirror biological connectionist models of computation (a platform known to yield intelligent behavior).
Open Source
Open source is software that, under license, grants free access and distribution to its source code, together with certain rights to produce derivative works which in turn must inherit the same open source terms. Open source is important because it gives free and common access to important software.
Operating System
An operating system is the software that provides important abstractions common to all programs on a computer, serving to mediate the use of its resources. Operating systems are important because they define a layer of abstraction between an application and the hardware on which it executes.
Pattern
A pattern is something that repeats in a predictable way. Patterns may be found in data (humans have a common wake/sleep cycle), in objects (all cats have similar features) and in algorithms (searching for a word in a document and searching for a gene sequence in DNA are very much the same thing). Patterns are important because they help us find common solutions to common patterns. The process of pattern discovery requires creativity, insight, experimentation, and adaptation.
Personal Computer
A personal computer (PC) is a category of computers suitable for a wide variety of personal tasks and intended for use by an individual consumer. Personal computers are important because they represent an end point in the computing fabric, bringing significant computational power to the individual at the edge.
Platform
A platform is the hardware and/or software on which applications and services may be built, deployed, and executed. A platform may be as simple as a single framework or library or as expansive as a physically distributed hardware/operating system/framework stack. Platforms are important because they can provide stable, useful, and economically-interesting domain-specific resources at scale.
Program
A program is a named unit of software, intended for execution on a computer’s hardware. The terms program, app, and application are largely interchangeable (although apps tend to have some element of human user interaction). Programs are important because they represent software-as-a-thing, which means that they can be developed, managed, configured, released, and evolved as if they were software itself.
Programming Language
A programming language is a textual or visual system used to compose software for execution on a computer. There exist a multitude of programming languages, each defined by its particular syntax and semantics that gives it the expresssiveness and precision necessary to model its intended domain. Programming languages are important because they provide the medium whereby humans specify the algorithms and data structures that direct the actions of a computer.
Quantum Computing
A quantum computer is a Turing-equivalent computer that operates in the realm of quantum mechanics. Quantum computing is important because it provides a platform for computing certain classes of problems significantly faster than classical computers.
Real-Time Computing
Real-time computing concerns systems whose actions are time sensitive. Real-time computing is important because it provides the foundation for systems that interact with or simulate the real world.
Semiconductor
A semiconductor is a material with particular electrical properties that make it suitable for the manufacturing of integrated circuits and other discrete components such as diodes and transistors. Semiconductors are important because they form the essential material from which integrated circuits are made.
Service
A service is a distinct run-time behavior in a distributed system, offered by one component and used by others. Services are important because they define the interfaces to the components of a distributed system.
Software
Software is the assemblage of instructions and data used to compose and execute an algorithm on a computer’s hardware. Software is important because it bridges our imagination to the hardware on which we make those stories manifest.
Software Architecture
Software architecture represents the structure and organization of a computer’s software that shapes its form and function. All architecture is design, but not all design is architecture: software architecture is important because it represents the significant design decisions that shape a system, where significant is measured by the cost of change.
Software Engineering
Software engineering is the art and the science of developing, deploying, and evolving computer software. Software engineering is important because it provides a systematic way of crafting quality software that is useful and that works.
Source code
Source code (or more simply, code) is the human-readable form of software. Source code is important because is the language whereby we specify the algorithms and data structures that direct the actions of a computer, in a form that humans can comprehend.
State
State is the instantaneous value of all the information in a system. State is important because all computation involves the transformation of the state of a system.
Supercomputer
A supercomputer is a category of computers with an extraordinary abundance of computational power. Supercomputers are important because they are essential for solving certain classes of problems that are computationally intense, such as weather prediction, climate modeling, protein folding, cryptanalysis, and nuclear weapon design.
Turing Machine
A Turing machine is a theoretical model of a computer. Any computable function can be implemented on a Turing machine; if a function cannot be implemented on a Turing machine, it is not computable. Turing machines are important because they provide a formal mathematical model that defines the nature of computability.
Ubiquitious Computing
Ubiquitous computing (also known as ambient computing) is the concept of being surrounded by pervasive computational resources. Ubiquitous computing is important because with it, we can build an enchanted land.
Virtual Reality
Virtual reality (VR) is an alternative, usually highly immersive, experience of a computed reality. Virtual reality is important because it gives us a way to experience the real world as well as imagined worlds in immersive and transformative ways.
Von Neumann Architecture
A von Neumann architecture is the most common style of computer architecture, and serves as the basis for virtually all stored-program computers. There are four major components to this architecture: input and output (which are connected to the outside), memory (used to store both instructions and data, tyipcally designed in a hiearchy of registers, cache, main memory, and external memory), and a central processing unit (the CPU, containing an arithmetic logic unit, registers, and control logic). The von Neumann architecture is important because it defines the architectural foundation of most all contemporary computers.