Recursion
Defining something in terms of itself, such as a function that calls itself or a structure built from smaller copies of itself.
Plain-language explanations of the ideas behind software - compilers, garbage collection, objects, types.
Defining something in terms of itself, such as a function that calls itself or a structure built from smaller copies of itself.
Changing the internal structure of existing code to make it easier to understand and cheaper to modify, without changing its observable behavior.
The property that an expression can be replaced by its value without changing the program's behavior, which requires pure functions with no side effects.
A compact notation for describing text patterns, rooted in Kleene's 1951 theory of automata and made into a practical search tool by Ken Thompson and the Unix utilities built on his work.
The simplest class in the Chomsky hierarchy: languages recognized by finite automata and described by regular expressions.
The formal set of operations on relations (select, project, join, union, and others) that gives relational databases their mathematical foundation and powers query optimization.
A database built on Codd's relational model that stores data in tables of rows and columns, accessed through SQL, with keys and constraints that enforce integrity.
A way of organizing data as relations (tables of rows and columns) with keys and set-based operations, kept independent of how the data is physically stored.
An append-only log of commands kept consistent across replicas via consensus, so each replica applies the same operations in the same order.
Keeping copies of the same data on multiple machines for fault tolerance, lower latency, and higher read throughput.
The delay between a write on the leader and its appearance on followers, which causes anomalies like reading stale data.
The property that building the same source in the same environment always yields a bit-for-bit identical artifact, so anyone can verify a binary matches its source.
The discipline of eliciting, analyzing, specifying, and validating what a software system must do and the constraints it must meet.
Roy Fielding's architectural style for networked software, built around resources, uniform interfaces, and stateless interaction over HTTP.
A processor design philosophy built on a small set of simple, fixed-length, load-store instructions that pipeline efficiently, argued for by Patterson and Ditzel in 1980.
The authoritative name servers that serve the DNS root zone -- the apex of the naming tree. Resolvers start here to find which server is responsible for a top-level domain. There are thirteen named root server identities, A through M.
The practice of tracing a failure back to its underlying cause rather than stopping at the visible symptom, using techniques like the Five Whys to follow the causal chain to where a fix actually prevents recurrence.
The first practical public-key cryptosystem, whose security rests on the difficulty of factoring the product of two large prime numbers.
A way to manage a long-running transaction across multiple services as a sequence of local transactions, each with a compensating action to undo it if a later step fails.
The ability of a system to handle growing load by adding resources, either a bigger machine (vertical) or more machines (horizontal).
The uncontrolled growth of a project's requirements after it has begun, when new features are added without adjusting time, budget, or resources.
An agile framework that organizes work into fixed-length sprints with defined accountabilities, events, and artifacts; the most widely used agile method.
A binary search tree that automatically keeps its height logarithmic through rotations, guaranteeing fast operations regardless of insertion order.
A version-numbering scheme that encodes compatibility into MAJOR.MINOR.PATCH numbers, specified by Tom Preston-Werner.
Structuring a system so each part addresses a distinct concern with minimal overlap, allowing the parts to be understood and changed independently; the term was coined by Edsger Dijkstra in 1974.
Rendering a page's HTML on the server per request and sending it to the browser ready to display, in contrast to client-side rendering where the browser builds the page from JavaScript.
A cloud model where the provider fully manages and scales the servers, so developers deploy code and pay only for actual execution; 'serverless' means no servers to manage, not no servers at all.
A dedicated infrastructure layer, typically built from sidecar proxies, that handles service-to-service traffic management, security, and observability without changing application code.
An architectural paradigm that structures software as network-accessible services with prescribed interfaces and contracts, the 2000s enterprise predecessor of microservices.
Splitting a dataset across multiple machines so the system can scale beyond one machine's capacity.
The shell feature that completes commands, paths, and arguments when you press Tab, including programmable completion that knows each command's own options.
The problem of finding a lowest-cost route between nodes in a weighted graph, solved by Dijkstra's algorithm, Bellman-Ford, and A* depending on the conditions.
Any observable effect of a procedure beyond returning a value - mutating state, performing input or output, or signalling an error - which functional programming seeks to minimize and isolate.
An attack that extracts secrets not by breaking the underlying math but by measuring physical or behavioral leakage such as timing, power consumption, electromagnetic emissions, cache state, or sound.
A deployment pattern in which a helper container or process runs alongside a main service to add capabilities such as proxying or logging, without changing the service itself.
Single Instruction, Multiple Data: one instruction operating in lockstep on a whole vector of data elements, a category that traces back to Flynn's 1972 taxonomy of computer organizations.
An authentication arrangement in which one login at a trusted identity provider grants a user access to many independent systems without re-entering credentials.
A web app that loads one HTML document and then updates the page dynamically with JavaScript, instead of fetching a fresh page from the server for every interaction.
A creational design pattern that ensures a class has only one instance and provides a global point of access to it.
The stages a software project moves through, from requirements through design, implementation, testing, deployment, and maintenance.
Software whose failure can cause death, injury, or catastrophe - in avionics, medical devices, nuclear plants, and vehicles - and the standards, formal methods, and certification processes built to make such software trustworthy.
How well software meets its requirements and serves its users, spanning external qualities like correctness and reliability and internal ones like maintainability.
The software supply chain is all the code, dependencies, build tools, and people that go into producing software; supply-chain security defends every link against tampering.
The practice of evaluating software by exercising it to find defects and check that it meets its requirements, organized into levels such as unit, integration, system, and acceptance testing.
Five object-oriented design principles popularized by Robert C. Martin - Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion - aimed at making code easier to maintain and extend.
A method for arranging items into a defined order, one of the oldest and most-studied problems in computing.
The common engineering choice between using more memory to run faster or less memory at the cost of more computation.
Executing instructions before the processor knows for certain that they are needed, typically past a predicted branch, and discarding the results if the guess was wrong; the architectural root of the Spectre and Meltdown vulnerabilities.