Skip to content

Computer Science Glossary

The Computer Science Glossary collects foundational computer science concepts that come up often in Python work but aren’t unique to Python. These are the language-agnostic ideas that sit beneath the code you write, the kind of vocabulary that connects everyday Python work to the broader field.

It’s a quick reference for beginners shoring up the fundamentals and for experienced developers who want a precise definition, or just a proper name for something they’ve used for years.

For Python’s own vocabulary, like decorators and comprehensions, see the Python Glossary. For the process and teamwork terms that surround the code, like continuous integration and technical debt, see the Software Engineering Glossary.

  • abstract data type (ADT) A model of a data structure defined by the operations it supports and their behavior, not its implementation.
  • algorithm A finite sequence of well-defined steps that takes zero or more inputs and produces an output to solve a problem.
  • big endian A byte order in which the most significant byte of a multi-byte value is stored or transmitted first.
  • Big O notation A mathematical notation for how an algorithm’s running time or memory use grows as its input size increases.
  • binary search An efficient algorithm for finding a target value in a sorted sequence by repeatedly halving the search range.
  • binary search tree (BST) A binary tree that keeps its keys in sorted order, letting a search discard half the remaining nodes at each step.
  • binary tree A hierarchical data structure in which each node has at most two children, a left child and a right child.
  • breadth-first search (BFS) An algorithm that traverses a graph level by level, visiting all of a vertex’s neighbors before moving deeper.
  • bubble sort A comparison sorting algorithm that repeatedly steps through a list, swapping adjacent elements that are out of order.
  • Dijkstra’s algorithm An algorithm that finds the shortest paths from a source node to all others in a weighted graph with non-negative edge weights.
  • graph A data structure of vertices connected by edges, used to model networks such as roads, dependencies, or links.
  • hash table A data structure that maps keys to values and supports fast lookup by computing an array index from each key.
  • hypothesis testing A formal statistical method for deciding whether sample data provides enough evidence to reject a default assumption about a population.
  • ISO 8601 An international standard for writing dates and times as text ordered from largest to smallest unit, making timestamps unambiguous and sortable.
  • lazy evaluation An evaluation strategy that delays computing a value until it is actually needed, avoiding work whose result the program never uses.
  • linked list A linear data structure whose elements are chained together by references rather than stored contiguously.
  • newline-delimited JSON (NDJSON) A text format that stores one JSON value per line, so programs can stream, append, and process records one at a time.
  • preemptive multitasking A CPU scheduling approach in which the operating system can interrupt a running task to give the CPU to another, without the task’s cooperation.
  • race condition A concurrency bug in which a program’s outcome depends on the unpredictable timing of threads or processes that access shared state.
  • reentrant A property of code that can be safely interrupted partway through and entered again before an earlier call finishes, because each call keeps its own state.
  • regression testing A software-testing practice that re-runs previously passing checks after a change to confirm existing behavior still works and no prior feature has broken.
  • rounding error A discrepancy between a number’s exact value and the finite-precision approximation a computer stores or computes, which can accumulate across operations.
  • runtime A program’s execution environment, such as a Python interpreter, that runs the code, manages memory, and mediates access to the operating system.
  • script A short program written to be run directly by an interpreter, typically to automate a task or glue programs together.
  • semaphore A synchronization primitive that uses a counter to limit how many threads or processes can access a shared resource at once.
  • sentinel value A special value an algorithm treats as a signal rather than data, most often to mark the end of a sequence or terminate a loop.
  • separation of concerns (SoC) A design principle that divides a program into distinct sections, each handling a single concern, to improve modularity and maintainability.
  • set union A set operation that combines two or more sets into one set containing every element that appears in at least one of them.
  • signed integer A whole number that can store negative, zero, or positive values, using part of its binary encoding to record the sign.
  • software development kit (SDK) A vendor-supplied bundle of libraries, tools, documentation, and sample code for building applications on a specific platform.
  • sorting algorithm An algorithm that arranges the elements of a sequence into a defined order, such as ascending or descending.
  • space complexity A measure of how much memory an algorithm needs as the size of its input grows.
  • spec-driven development (SDD) A software development approach in which a written specification, not the code, is the source of truth that drives the implementation.
  • static code analysis An examination of source code without executing it, used to detect bugs, security vulnerabilities, style violations, and other source-visible properties.
  • static typing A form of type checking in which the types of a program’s expressions and variables are verified before execution, usually at compile time.
  • stderr An output stream that programs use for diagnostic and error messages, separate from normal output so the two can be redirected and processed independently.
  • stdin A process’s default input stream, conventionally connected to the keyboard or a redirected source.
  • stdout A byte stream that a process uses to write its conventional output, separate from diagnostic messages and input.
  • subtyping A relation between data types where any value of the subtype can be used wherever a value of the related supertype is expected.
  • syntactic sugar Programming language syntax designed to improve readability or convenience without changing what the language can compute.
  • test case A specification of inputs, preconditions, and expected results used to verify a software requirement or exercise a particular code path.
  • test fixture A fixed initial state of data, objects, or environment that a software test relies on to produce repeatable results.
  • test runner A tool that discovers, executes, and reports on automated tests within a codebase.
  • time complexity A measure of how an algorithm’s running time grows as the size of its input increases.
  • Timsort A hybrid, stable sorting algorithm that combines merge sort and insertion sort, used as Python’s built-in sort to exploit order already in the data.
  • UTF-8 A variable-width character encoding that stores each Unicode code point in one to four bytes, dominant on the web and the default in Python.