✦ For everyone, free.

Practical knowledge for real and everyday life

Home

Computing

A structured guide to the ideas, systems, and practical skills behind modern computing.

Computing is the systematic discipline concerned with the representation, processing, storage, communication, and transformation of information through formal and physical mechanisms. It encompasses the full spectrum of intellectual and practical activity that connects abstract mathematical structures to concrete computational machines, and from those machines to the systems, software, and services that operate in the world. Computing is at once a formal science, an engineering discipline, a design practice, and an increasingly central infrastructure of modern civilization.

The scope of computing spans from the most abstract foundations — the mathematical theory of what can and cannot be computed, the logical structures that underlie information — down to the most concrete physical realities: transistors switching at nanometer scales, photons traveling through fiber, electrons charging capacitors in memory arrays. Between these extremes lies a rich and structured hierarchy of concepts, artifacts, and disciplines that together constitute the field.


The Nature of Computing

At its most fundamental level, computing is concerned with the manipulation of symbols according to rules. A computation takes some representation of information as input, applies a defined process to it, and produces some representation as output. This abstract characterization is powerful precisely because it is substrate-independent: the same computation can be carried out by a mechanical gear system, an electronic circuit, a biological process, or a human following a procedure with pencil and paper.

The theoretical core of computing rests on precise characterizations of what computation is and what its limits are. The work of Alan Turing, Alonzo Church, Kurt Gödel, and others in the 1930s established that there are well-defined boundaries to what any computational process can accomplish — problems that are undecidable regardless of the resources available — and that many distinct formal models of computation (Turing machines, the lambda calculus, recursive functions) are equivalent in their expressive power. These results are not merely historical curiosities; they continue to define the intellectual terrain within which all computational thinking operates.

Theory & Mathematics Algorithms & Data Structures Systems & Software Hardware & Physical Infrastructure

Information as the Central Object

Computing treats information as a first-class object of study and manipulation. Information, in the technical sense, refers to structured data whose meaning can be preserved, transformed, and communicated. Claude Shannon's mathematical theory of communication established the bit — a binary choice between two equally probable alternatives — as the fundamental unit of information, and defined quantitative measures of information content, channel capacity, and entropy that underpin all of digital communication and data compression.

The representation of information is itself a major concern of computing. Numbers, text, images, audio, video, programs, and data structures of arbitrary complexity are all encoded as configurations of bits, and the study of how to encode them efficiently, robustly, and securely is a central preoccupation of multiple computing subdisciplines. Every layer of a computing system — from the physical voltages in a wire to the user interface on a screen — is a representation of information at a particular level of abstraction.


Computation and Process

A computation is not merely a static structure — it is a dynamic process unfolding in time. The study of computational processes encompasses their correctness (do they produce the right result?), their efficiency (how many resources do they consume?), and their termination (do they always finish?). These questions connect computing to mathematics, logic, and engineering simultaneously.

Algorithms — precisely specified procedures for solving classes of problems — are the primary vehicle through which computational processes are described and analyzed. The efficiency of an algorithm is characterized in terms of how its resource consumption — time and memory — scales as the size of its input grows. This analysis uses the language of asymptotic complexity, distinguishing between problems that are tractable in practice and those that are not, regardless of hardware improvements.

The study of computational complexity classifies problems according to the resources required to solve them. The boundary between efficiently solvable problems and intractable ones — captured most famously in the unresolved P versus NP question — is one of the deepest open problems in all of science, with implications for cryptography, optimization, artificial intelligence, and the theoretical limits of what machines can do.


The Structure of Computing as a Discipline

Computing is organized into a cluster of interrelated disciplines, each addressing a different dimension of the overall enterprise. These disciplines are not isolated — they share methods, insights, and foundational concepts — but each has its own characteristic questions, techniques, and bodies of knowledge.

Computer Science is the theoretical and foundational branch of computing. It is concerned with the mathematical properties of computation, the design and analysis of algorithms, the theory of programming languages, formal logic, automata theory, and computational complexity. Computer science provides the intellectual foundations that all other computing disciplines draw upon.

Software Engineering is concerned with the principled construction of software systems: how to specify, design, implement, verify, and maintain software that is reliable, maintainable, and fit for purpose at scale. It bridges computer science theory and the practical realities of building systems that work in the world.

Computer Engineering addresses the design and construction of computing hardware and the firmware and low-level software that controls it. It operates at the intersection of electrical engineering and computing, dealing with processor architecture, digital logic design, memory systems, and embedded systems.

Information Systems focuses on the role of computing within organizations: how information technology is designed, deployed, and managed to support organizational goals, decision-making, and business processes. It emphasizes the human and organizational context of computing systems.

Information Technology is concerned with the deployment, operation, and management of computing infrastructure in support of users and organizations. It encompasses networking, system administration, security operations, and the management of computing services.

Human-Computer Interaction studies the relationship between people and computing systems, focusing on usability, accessibility, interface design, and the cognitive and social dimensions of how humans experience and interact with technology.

Artificial Intelligence and Machine Learning address the design of systems that exhibit intelligent behavior — reasoning, learning, perception, language understanding, and autonomous action — through computational means.

Data Science and Analytics focus on the extraction of knowledge and insight from large, complex data sets, combining methods from statistics, machine learning, data engineering, and domain expertise.

Computing Core Computer Science Software Engineering Computer Engineering Information Systems AI & Machine Learning Data Science

Hardware: The Physical Substrate

Every computation ultimately executes on physical hardware. Modern digital computing hardware is built on the manipulation of binary electrical signals — high and low voltages representing the values 1 and 0 — through circuits composed of transistors. Contemporary processors contain tens of billions of transistors fabricated at feature sizes measured in nanometers, switching billions of times per second.

The organization of computing hardware proceeds through a hierarchy of abstraction: transistors combine into logic gates, gates combine into functional units (adders, multiplexers, registers), functional units combine into processor components (arithmetic-logic units, control units, cache memories), and processors combine with memory systems, storage, and input-output devices into complete computing systems.

The architecture of a processor — the design decisions that determine how it executes instructions, manages data, and coordinates with memory — has profound consequences for its performance, power consumption, and the kinds of computations it handles efficiently. Modern processor architectures employ techniques such as pipelining (overlapping the execution of multiple instructions), out-of-order execution (reordering instructions to maximize utilization), branch prediction, and multiple levels of cache memory to extract maximum performance from available transistors.


Software: The Logical Layer

Software is the layer of computing that gives hardware its specific behavior. It consists of programs — sequences of instructions encoded as data — that processors execute to carry out computations. Software exists at multiple levels of abstraction, from machine code (the binary instructions directly executed by a processor) through assembly language, system software, programming languages, libraries, frameworks, and application systems.

Operating systems are the foundational layer of system software. They manage the hardware resources of a computing system — processor time, memory, storage, network — and provide abstractions that allow application software to operate without direct knowledge of hardware specifics. File systems, process management, memory management, and device drivers are among the core functions of an operating system.

Programming languages are formal systems for expressing computations. They provide human-readable notation for specifying computational processes, which compilers or interpreters then translate into executable form. Languages vary enormously in their level of abstraction, their computational model (imperative, functional, logical, object-oriented), their type systems, and their intended application domains.


Networks and Distributed Systems

Modern computing is pervasively networked. Individual machines are connected into local networks, regional networks, and the global internet, enabling communication, resource sharing, and distributed computation at planetary scale. The study of computer networks addresses the physical transmission of data, the protocols that govern communication, the routing of data across complex topologies, and the management of shared network resources.

Distributed systems extend the computational model beyond the single machine to collections of independent computers that cooperate to accomplish shared goals. The design of distributed systems must contend with challenges that do not arise in single-machine computing: partial failures (some nodes fail while others continue), network delays and unreliability, the absence of a shared clock, and the difficulty of achieving consistent shared state across independent machines. The theoretical limits of distributed computing — expressed in results such as the CAP theorem and the FLP impossibility result — define what is and is not achievable in distributed settings.


Computing and Infrastructure

The relationship between computing and infrastructure is one of mutual constitution. Computing systems are themselves physical infrastructure — data centers, network cables, wireless towers, satellites — and at the same time they are the operational substrate of virtually all other modern infrastructure: energy grids, financial systems, transportation networks, healthcare systems, communications, and government. The reliability, security, efficiency, and scalability of computing infrastructure are therefore matters of broad societal consequence, not merely technical concerns.

The discipline of Infrastructure and Operations addresses the provisioning, configuration, monitoring, and management of the computing systems and networks on which all software systems depend. It encompasses system administration, network operations, cloud computing, site reliability engineering, and the practices of continuous delivery and operational excellence that keep large-scale computing systems functioning reliably under real-world conditions.


Computing, taken as a whole, is the discipline of harnessing the power of systematic, rule-governed symbol manipulation — realized in physical machines, organized through software, connected through networks, and directed toward human purposes — to extend human cognitive capacity, automate complex processes, and create new forms of value and capability in the world. Its scope is as broad as information itself, and its influence pervades every domain of contemporary human activity.

Content in this section