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 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 tree A hierarchical data structure in which each node has at most two children, a left child and a right child.
  • 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.
  • linked list A linear data structure whose elements are chained together by references rather than stored contiguously.
  • 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.
  • 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.
  • 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.
  • 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.