Table of Contents
Glossary of Computer Science
Return to Outline of Computer Science, Computer Science
List of definitions of terms and concepts commonly used in computer science
This glossary of computer science is a list of definitions of terms and concepts used in computer science, its sub-disciplines, and related fields, including terms relevant to software, data science, and
.
A
in which a data type is defined by its behavior (
Major Glossary Categories
For IT - DevOps, etc, see IT Glossary
- Categories – The bird's eye view navigation of this whole site.
Major Glossary Categories: Information Technology - IT - Computing Topics, AWS Glossary, Azure Glossary, C Language Glossary (21st Century C Glossary), C++ Glossary, C# Glossary, Cloud Glossary, Cloud Native Glossary, Clojure Glossary, COBOL Glossary, Cybersecurity Glossary, DevOps Glossary, Fortran Glossary, Functional Programming Glossary, Golang Glossary, GCP Glossary, IBM Glossary, IBM Mainframe Glossary, iOS Glossary, Java Glossary, JavaScript Glossary, Kotlin Glossary, Kubernetes Glossary, Linux Glossary, macOS Glossary, MongoDB Glossary, PowerShell Glossary, Python Glossary and Python Official Glossary, Ruby Glossary, Rust Glossary, Scala Glossary, Concurrency Glossary, SQL Glossary, SQL Server Glossary, Swift Glossary, TypeScript Glossary, Windows Glossary, Windows Server Glossary, GitHub Glossary, Awesome Glossaries. (navbar_glossary)
Major Glossary Categories: Information Technology - IT - Computing Topics, AWS Glossary, Azure Glossary, C Language Glossary (21st Century C Glossary), C++ Glossary, C# Glossary, Cloud Glossary, Cloud Native Glossary, Clojure Glossary, COBOL Glossary, Cybersecurity Glossary, DevOps Glossary, Fortran Glossary, Functional Programming Glossary, Golang Glossary, GCP Glossary, IBM Glossary, IBM Mainframe Glossary, iOS Glossary, Java Glossary, JavaScript Glossary, Kotlin Glossary, Kubernetes Glossary, Linux Glossary, macOS Glossary, MongoDB Glossary, PowerShell Glossary, Python Glossary and Python Official Glossary, Ruby Glossary, Rust Glossary, Scala Glossary, Concurrency Glossary, SQL Glossary, SQL Server Glossary, Swift Glossary, TypeScript Glossary, Windows Glossary, Windows Server Glossary, GitHub Glossary, Awesome Glossaries. (navbar_glossary)
© 1994 - 2024 Cloud Monk Losang Jinpa or Fair Use. Disclaimers
SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.
© 1994 - 2024 Cloud Monk Losang Jinpa or Fair Use. Disclaimers
SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.
) from the point of view of a
of the data, specifically in terms of possible values, possible operations on data of this type, and the behavior of these operations. This contrasts with
, which are concrete representations of data from the point of view of an implementer rather than a user.}}
in some computer languages.<ref>
</ref>}}
, the process of removing physical, spatial, or temporal details<ref>
</ref> or
in the study of objects or systems in order to more closely attend to other details of interest;<ref name=“abstraction”>
</ref> it is also very similar in nature to the process of generalization.}}
and intelligent control systems depicting the arrangement of components. The architectures implemented by intelligent agents are referred to as cognitive architectures.<ref>Comparison of Agent Architectures
</ref>}}
for simulating the actions and interactions of autonomous agents (both individual or collective entities such as organizations or groups) with a view to assessing their effects on the system as a whole. It combines elements of game theory, complex systems, emergence, computational sociology, multi-agent systems, and evolutionary programming. Monte Carlo methods are used to introduce randomness.}}
in which the values of multiple rows are grouped together to form a single value of more significant meaning or measurement, such as a sum, count, or max.}}
</ref> It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.<ref name=“WhatIsAgile”>
</ref>}}
. The design of algorithms is part of many solution theories of operation research, such as dynamic programming and divide-and-conquer. Techniques for designing and implementing algorithm designs are also called algorithm design patterns,<ref>
</ref> such as the template method pattern and decorator pattern.}}
which relates to the number of computational resources used by the algorithm. An algorithm must be analyzed to determine its resource usage, and the efficiency of an algorithm can be measured based on usage of different resources. Algorithmic efficiency can be thought of as analogous to engineering productivity for a repeating or continuous process.}}
definitions, communication protocols, and tools for building
. In general terms, it is a set of clearly defined methods of communication among various components. A good API makes it easier to develop a
by providing all the building blocks, which are then put together by the programmer.}}
designed to perform a group of coordinated functions, tasks, or activities for the benefit of the
. Common examples of applications include word processors, spreadsheets, accounting applications, web browsers, media players, aeronautical flight simulators, console games, and photo editors. This contrasts with
, which is mainly involved with managing the computer's most basic running operations, often without direct input from the user. The collective noun application software refers to all applications collectively.<ref>
</ref>}}
consisting of a collection of elements (
or
), each identified by at least one array index or key. An array is stored such that the position of each element can be computed from its index tuple by a mathematical formula.<ref>
</ref><ref name=“andres”>
</ref><ref name=“garcia”>
</ref> The simplest type of data structure is a linear array, also called a one-dimensional array.}}
. Some artifacts (e.g. use cases, class diagrams, and other Unified Modeling Language (UML) models, requirements, and design documents) help describe the function, architecture, and design of software. Other artifacts are concerned with the process of development itself—such as project plans, business cases, and risk assessments.}}
, AI research is defined as the study of “intelligent agents”: devices capable of perceiving their environment and taking actions that maximize the chance of successfully achieving their goals.<ref name=“Definition of AI”> Definition of AI as the study of intelligent agents:
, which provides the version that is used in this article. Note that they use the term “computational intelligence” as a synonym for artificial intelligence.
(who prefer the term “rational agent”) and write “The whole-agent view is now widely accepted in the field”
.
<!–These textbooks are the most widely used in academic AI.–>
.
</ref> Colloquially, the term “artificial intelligence” is applied when a machine mimics “cognitive” functions that humans associate with other human minds, such as “learning” and “problem solving”.
}}
.}}
, a
that a predicate (Boolean-valued function, i.e. a true–false
) is always true at that point in code execution. It can help a programmer read the code, help a
compile it, or help the program detect its own defects. For the latter, some programs check assertions by actually evaluating the predicate as they run and if it is not in fact true – an assertion failure – the program considers itself to be broken and typically deliberately
or throws an assertion failure exception.}}
</ref><ref name=“ms”>
</ref>
- the addition of a pair to the collection
- the removal of a pair from the collection
- the modification of an existing pair
- the lookup of a value associated with a particular key}}
and discrete mathematics (a subject of study in both mathematics and
).}}
and mathematical logic dedicated to understanding different aspects of reasoning. The study of automated reasoning helps produce computer programs that allow computers to reason completely, or nearly completely, automatically. Although automated reasoning is considered a sub-field of
, it also has connections with
, and even philosophy.}}
B
, a set of programs, or other operations, in order to assess the relative performance of an object, normally by running a number of standard tests and trials against it.<ref>
</ref> The term benchmark is also commonly utilized for the purposes of elaborately designed benchmarking programs themselves.}}
usage is at least, at most, and on average, respectively, for a given
. Usually the resource being considered is running time, i.e. time complexity, but it could also be memory or some other resource. Best case is the function which performs the minimum number of steps on input data of n elements; worst case is the function which performs the maximum number of steps on input data of size n; average case is the function which performs an average number of steps on input data of n elements.}}
to adequately deal with. Data with many cases (rows) offer greater statistical power, while data with higher complexity (more attributes or columns) may lead to a higher false discovery rate.<ref>
</ref>}}
</ref> Edmund Landau,<ref name=Landau>
</ref> and others, collectively called Bachmann–Landau notation or asymptotic notation.}}
</ref> logarithmic search,
or binary chop.
}}
that finds the position of a target value within a sorted array.<ref>
</ref><ref>
</ref>}}
in which each node has at most two children, which are referred to as the
and the
. A recursive definition using just set theory notions is that a (non-empty) binary tree is a tuple (L, S, R), where L and R are binary trees or the empty set and S is a singleton set.<ref name=“GarnierTaylor2009”>
</ref> Some authors allow the binary tree to be the empty set as well.<ref name=“Skiena2009”>
</ref>}}
, information engineering, mathematics, and statistics to develop methods and software tools for analyzing and interpreting biological data. Bioinformatics is widely used for in silico analyses of biological queries using mathematical and statistical techniques.}}
and digital communications; a portmanteau of binary digit. A
digit can have one of two possible
, and may be physically represented with a two-state device. These state values are most commonly represented as either a
.<ref name=“Mackenzie_1980”>
, the number of
that are conveyed or processed per unit of time.<ref>
</ref>}}
, a basic access control mechanism that allows through all elements (email addresses, users, passwords, URLs, IP addresses, domain names, file hashes, etc.), except those explicitly mentioned in a list of prohibited elements. Those items on the list are denied access. The opposite is a
, which means only items on the list are allowed through whatever gate is being used while all other elements are blocked. A greylist contains items that are temporarily blocked (or temporarily allowed) until an additional step is performed.}}
</ref> and OS/2<ref name=“os2bmp”>
</ref> operating systems.}}
used in a
that returns a Boolean value when evaluated, that is one of true or false. A Boolean expression may be composed of a combination of the Boolean constants true or false, Boolean-typed variables, Boolean-valued operators, and Boolean-valued functions.<ref>
</ref>}}
, representing a
. Historically, the byte was the number of bits used to encode a single character of text in a computer<ref name=“Buchholz_1962”>
GAMMA 60|fr|Gamma 60}} computer.)<br />Block refers to the number of words transmitted to or from an input-output unit in response to a single input-output instruction. Block size is a structural property of an input-output unit; it may have been fixed by the design or left to be varied by the program. […]}}</ref><ref name=“Bemer_1959”>
</ref> and for this reason it is the smallest addressable unit of
in many
.}}
. There, a small program is stored called firmware. It does power-on self-tests and, most importantly, allows access to other types of memory like a hard disk and main memory. The firmware loads bigger programs into the computer's main memory and runs it.}}
C
</ref>}}
to other code that is expected to “call back” (execute) the argument at a given time. This execution may be immediate, as in a synchronous callback, or it might happen at a later time, as in an asynchronous callback.}}
that carries out the
of a
by performing the basic arithmetic, logic, controlling, and
(I/O) operations specified by the instructions. The computer industry has used the term “central processing unit” at least since the early 1960s.<ref name=“weik1961”>
</ref> Traditionally, the term “CPU” refers to a processor, more specifically to its processing unit and
(CU), distinguishing these core elements of a computer from external components such as main memory and I/O circuitry.<ref name=“kuck”>
</ref>}}
</ref>}}
, an
for performing encryption or decryption—a series of well-defined steps that can be followed as a
.}}
, an extensible program-code-template for creating objects, providing initial values for state (member variables) and implementations of behavior (member functions or methods).
}} In many languages, the class name is used as the name for the class (the template itself), the name for the default constructor of the class (a
that creates objects), and as the type of objects generated by instantiating the class; these distinct concepts are easily conflated.
}}}}
(OOP) in which inheritance occurs via defining “
” of
, instead of via the objects alone (compare prototype-based programming).}}
that accesses a service made available by a server. The server is often (but not always) on another computer system, in which case the client accesses the service by way of a network.<ref>Sadoski, Darleen. Client/Server Software Architectures – An Overview, Software Technology Roadmap, 1997-08-02. Retrieved on 2008-09-16.</ref> The term applies to the role that programs or devices play in the client–server model.}}
</ref> The focus of the cleanroom process is on defect prevention, rather than defect removal.}}
together with an environment.<ref>Sussman and Steele. “Scheme: An interpreter for extended lambda calculus”. “… a data structure containing a lambda expression, and an environment to be used when that lambda expression is applied to arguments.” (Wikisource)</ref>}}
, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and
,
,
or
specifications. In IBM's OS/360 and its successors they are referred to as partitioned data sets.}}
for accomplishing a specific
task. Programming involves tasks such as analysis, generating
, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen
(commonly referred to as coding<ref name=“tumblr2014”>
</ref><ref name=“tumblr1”>
</ref>). The
of a program is written in one or more programming languages. The purpose of programming is to find a sequence of instructions that will automate the performance of a task for solving a given problem. The process of programming thus often requires expertise in several different subjects, including knowledge of the
, specialized algorithms, and formal logic.}}
,
, error detection and correction, data transmission and data storage. Codes are studied by various scientific disciplines—such as information theory, electrical engineering, mathematics, linguistics, and
—for the purpose of designing efficient and reliable data transmission methods. This typically involves the removal of redundancy and the correction or detection of errors in the transmitted data.}}
. Each record consists of one or more
, separated by commas. The use of the comma as a field separator is the source of the name for this file format.}}
that transforms computer code written in one
(the source language) into another programming language (the target language). Compilers are a type of translator that support digital devices, primarily computers. The name compiler is primarily used for programs that translate
from a high-level programming language to a lower-level language (e.g. assembly language, object code, or machine code) to create an
program.<ref>
</ref>}}
, and of the theory of computation that originated in the 1930s with the study of computable functions and Turing degrees. The field has since expanded to include the study of generalized computability and definability. In these areas, recursion theory overlaps with proof theory and effective descriptive set theory.}}
</ref> that includes both arithmetical and non-arithmetical steps and follows a well-defined model, e.g. an
. The study of computation is paramount to the discipline of
.}}
, to calculate the structures and properties of molecules and solids.}}
which focuses on classifying computational problems according to their inherent difficulty, and relating these classes to each other. A computational problem is a task solved by a computer. A computation problem is solvable by mechanical application of mathematical steps, such as an
.}}
that requires extensive computational resources to study the behavior of a complex system by computer simulation.<ref>
</ref>}}
</ref><ref>What is computational neuroscience? Patricia S. Churchland, Christof Koch, Terrence J. Sejnowski. in Computational Neuroscience pp.46-55. Edited by Eric L. Schwartz. 1993. MIT Press
</ref><ref>
</ref><ref>
</ref>}}
.</ref> Historically, computational physics was the first application of modern computers in science, and is now a subset of computational science.}}
. Modern computers have the ability to follow generalized sets of operations, called
. These programs enable computers to perform an extremely wide range of tasks.}}
systems. Some definitions of architecture define it as describing the capabilities and programming model of a computer but not a particular implementation.<ref>
</ref> In other definitions computer architecture involves instruction set architecture design, microarchitecture design, logic design, and implementation.<ref>
</ref>}}
components and recording media that are used to retain digital data. Data storage is a core function and fundamental component of all modern computer systems.<ref>name=“Patterson”>
</ref>
}}
</ref>}}
.}}
</ref> that can be executed by a computer to perform a specific task. }}
for accomplishing a specific
task. Programming involves tasks such as analysis, generating
, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen
(commonly referred to as coding<ref name=“tumblr2014”/><ref name=“tumblr1”/>). The
of a program is written in one or more programming languages. The purpose of programming is to find a sequence of instructions that will automate the performance of a task for solving a given problem. The process of programming thus often requires expertise in several different subjects, including knowledge of the
, specialized algorithms, and formal logic.}}
. It involves the study of
that process, store, and communicate digital information. A
specializes in the theory of
and the design of computational systems.<ref>
</ref>}}
, the study of the theoretical foundations of information and computation and their application.<ref>
</ref>}}
</ref> or information technology security (IT security).}}
, or electronic data, as well as from disruption or misdirection of the services they provide.}}
.</ref><ref>Huang, T. (1996-11-19). Vandoni, Carlo, E, ed. Computer Vision : Evolution And Promise (PDF). 19th CERN School of Computing. Geneva: CERN. pp. 21–25. doi:10.5170/CERN-1996-008.21.
.</ref><ref>Milan Sonka; Vaclav Hlavac; Roger Boyle (2008). Image Processing, Analysis, and Machine Vision. Thomson.
.</ref>}}
</ref>}}
</ref>}}
which performs different computations or actions depending on whether a programmer-specified Boolean condition evaluates to true or false. Apart from the case of branch predication, this is always achieved by selectively altering the
based on some condition.}}
in which
is passed explicitly in the form of a continuation. This is contrasted with direct style, which is the usual style of programming. Gerald Jay Sussman and Guy L. Steele, Jr. coined the phrase in AI Memo 349 (1975), which sets out the first version of the Scheme programming language.<ref>
</ref><ref>
</ref>}}
</ref> The organization has released several copyright-licenses, known as Creative Commons licenses, free of charge to the public.}}
</ref> More generally, cryptography is about constructing and analyzing protocols that prevent third parties or the public from reading private messages;<ref name=“modern-crypto”>
</ref> various aspects in information security such as data confidentiality, data integrity, authentication, and non-repudiation<ref name=“hac”>
</ref> are central to modern cryptography. Modern cryptography exists at the intersection of the disciplines of mathematics, computer science, electrical engineering, communication science, and physics. Applications of cryptography include electronic commerce, chip-based payment cards, digital currencies, computer passwords, and military communications.}}
.}}
D
or
)<ref name=“jargon”>
</ref> is a computer program that runs as a background process, rather than being under the direct control of an interactive user. Traditionally, the process names of a daemon end with the letter d, for clarification that the process is in fact a daemon, and for differentiation between a daemon and a normal computer program. For example,
is a daemon that implements system logging facility, and
is a daemon that serves incoming SSH connections.}}
and associated components, such as telecommunications and data storage systems. It generally includes redundant or backup components and infrastructure for power supply, data communications connections, environmental controls (e.g. air conditioning and fire suppression) and various security devices.<ref name=NYT92212>
</ref>}}
</ref><ref name=“brittanica”>
</ref><ref name=“elements”>
</ref><ref>
</ref> Data mining is the analysis step of the “knowledge discovery in databases” process, or KDD.<ref>Fayyad, Usama; Piatetsky-Shapiro, Gregory; Smyth, Padhraic (1996). “From Data Mining to Knowledge Discovery in Databases” (PDF). Retrieved 17 December 2008.</ref> Aside from the raw analysis step, it also involves database and data management aspects, data pre-processing, model and inference considerations, interestingness metrics, complexity considerations, post-processing of discovered structures, visualization, and online updating.<ref name=“acm” /> }}
</ref><ref>
</ref> similar to
. Data science is a “concept to unify statistics, data analysis, machine learning and their related methods” in order to “understand and analyze actual phenomena” with data.<ref name=“Hayashi”>
</ref> It employs techniques and theories drawn from many fields within the context of mathematics, statistics, information science, and
.}}
</ref><ref>
</ref><ref>
</ref> More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data.<ref>
</ref>}}
or
how the programmer intends to use the data. Most
support common data types of real, integer, and Boolean. A data type constrains the values that an
, such as a
or a
, might take. This data type defines the operations that can be done on the data, the meaning of the data, and the way values of that type can be stored. A type of value from which an expression may take its value.<ref>
</ref><ref>
</ref>}}
that prevent correct operation of
or the system as a whole. Debugging tactics can involve interactive debugging,
analysis, unit testing, integration testing, log file analysis, monitoring at the application or system level, memory dumps, and profiling.}}
, a language construct that specifies properties of an
: it declares what a word (identifier) “means”.<ref name=“c11”>“A declaration specifies the interpretation and attributes of a set of identifiers. A definition of an identifier is a declaration for that identifier that:
- for an object [variable or constant], causes storage to be reserved for that object;
- for a function, includes the function body;
- for an enumeration constant, is the (only) declaration of the identifier;
- for a typedef name, is the first (or only) declaration of the identifier.”
C11 specification, 6.7: Declarations, paragraph 5.</ref> Declarations are most commonly used for functions, variables, constants, and classes, but can also be used for other entities such as enumerations and type definitions.<ref name=“c11”/> Beyond the name (the identifier itself) and the kind of entity (function, variable, etc.), declarations typically specify the
(for variables and constants), or the type signature (for functions); types may also include dimensions, such as for arrays. A declaration is used to announce the existence of the entity to the
; this is important in those strongly typed languages that require functions, variables, and constants, and their types, to be specified with a declaration before use, and is used in forward declaration.<ref>
</ref> The term “declaration” is frequently contrasted with the term “definition”,<ref name=“c11”/> but meaning and usage varies significantly between languages.}}
in the system.<ref>
</ref> Between consecutive events, no change in the system is assumed to occur; thus the simulation can directly jump in time from one event to the next.}}
that studies distributed systems. A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another.<ref name=“Coulouris”>
</ref> The components interact with one another in order to achieve a common goal. Three significant characteristics of distributed systems are: concurrency of components, lack of a global clock, and independent failure of components.<ref name=“Coulouris” /> Examples of distributed systems vary from SOA-based systems to massively multiplayer online games to peer-to-peer applications.}}
. A divide-and-conquer
works by recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem.}}
.}}
or is embedded in the
. It either explains how it operates or how to use it, and may mean different things to people in different roles.}}
</ref>}}
or to a private network. It associates various information with domain names assigned to each of the participating entities. Most prominently, it translates more readily memorized domain names to the numerical IP addresses needed for locating and identifying computer services and devices with the underlying network protocols. By providing a worldwide, distributed directory service, the Domain Name System has been an essential component of the functionality of the Internet since 1985.}}
point.}}
</ref> such as a web server, an FTP server, an email server, or other similar systems. This contrasts with
, where data is sent to a remote server. A download is a file offered for downloading or that has been downloaded, or the process of receiving such a file.}}
E
</ref> Modern encryption schemes utilize the concepts of public-key and symmetric-key.<ref name=“:1” /> Modern encryption techniques ensure security because modern computers are inefficient at cracking the encryption.}}
in which the
is determined by
such as user actions (mouse clicks, key presses), sensor outputs, or messages from other programs or
. Event-driven programming is the dominant paradigm used in graphical user interfaces and other applications (e.g. JavaScript web applications) that are centered on performing certain actions in response to
. This is also true of programming for device drivers (e.g. P in USB device driver stacks<ref>
</ref>).}}
for global optimization inspired by biological evolution, and the subfield of
and
studying these algorithms. In technical terms, they are a family of population-based trial-and-error problem-solvers with a metaheuristic or stochastic optimization character.}}
</ref> as opposed to a data file that must be parsed by a program to be meaningful. The exact interpretation depends upon the use - while “instructions” is traditionally taken to mean machine code instructions for a physical CPU, in some contexts a file containing bytecode or scripting language instructions may also be considered executable.}}
, of exceptions – anomalous or exceptional conditions requiring special processing – often disrupting the normal flow of
. It is provided by specialized
constructs, computer hardware mechanisms like interrupts, or operating system IPC facilities like signals.}}
, a combination of one or more
,
,
, and
that the programming language interprets (according to its particular rules of precedence and of association) and computes to produce (“to return”, in a
environment) another value. This process, as for mathematical expressions, is called evaluation.}}
F
or
to process a stream, producing another stream. While a single filter can be used individually, they are frequently strung together to form a pipeline.}}
.</math>}}
for specifying iteration, which allows code to be executed repeatedly. Various keywords are used to specify this statement: descendants of ALGOL use “for”, while descendants of Fortran use “do”. There are also other possibilities, e.g. COBOL uses “PERFORM VARYING”.}}
and hardware systems.<ref name=“butler”>
</ref> The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design.<ref>
</ref>}}
of intended
underlying a system with respect to a certain formal specification or property, using
of mathematics.<ref>
</ref>}}
—a style of building the structure and elements of
–that treats
as the evaluation of mathematical functions and avoids changing-state and mutable data. It is a declarative programming paradigm in that programming is done with
or
<ref name=“expression style”>
</ref> instead of
.}}
G
. Originally, it addressed zero-sum games, in which each participant's gains or losses are exactly balanced by those of the other participants. Today, game theory applies to a wide range of behavioral relations, and is now an umbrella term for the science of logical decision making in humans, animals, and computers.}}
, in which a poorly written program might produce nonsensical behavior.}}
for digital information. The prefix giga means 109 in the International System of Units (SI). Therefore, one gigabyte is
. The unit symbol for the gigabyte is GB.}}
, a variable with global
, meaning that it is visible (hence accessible) throughout the program, unless shadowed. The set of all global variables is known as the global environment or global state. In compiled languages, global variables are generally static variables, whose extent (lifetime) is the entire runtime of the program, though in interpreted languages (including command-line interpreters), global variables are generally dynamically allocated when declared, since they are not known ahead of time.}}
H
, a hash table (hash map) is a data structure that implements an associative array abstract data type, a structure that can map keys to
. A hash table uses a hash function to compute an index into an array of buckets or slots, from which the desired value can be found.}}
</ref> tree that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater than or equal to (in a max heap) or less than or equal to (in a min heap) the key of C.<ref>Black (ed.), Paul E. (2004-12-14). Entry for heap in Dictionary of Algorithms and Data Structures. Online version. U.S. National Institute of Standards and Technology, 14 December 2004. Retrieved on 2017-10-08 from https://xlinux.nist.gov/dads/HTML/heap.html.</ref> The node at the “top” of the heap (with no parents) is called the root node.}}
<!–DOI for chapter–></ref>}}
, behavioral sciences, design, media studies, and several other fields of study.}}
I
that uses
that change a program's
. In much the same way that the imperative mood in natural languages expresses commands, an imperative program consists of
for the computer to perform. Imperative programming focuses on describing how a program operates.}}
with the iterative philosophy of prototyping.}}
, for locating and assessing
for team-centric efforts.}}
, the mechanism of basing an
or
upon another object (prototype-based inheritance) or class (class-based inheritance), retaining similar implementation. Also defined as deriving new classes (sub classes) from existing ones (super class or base class) and forming them into a hierarchy of classes.}}
, and the outside world, possibly a human or another information processing system. Inputs are the signals or data received by the system and outputs are the signals or data sent from it. The term can also be used as part of an action; to “perform I/O” is to perform an input or output operation.}}
(CPU) follows from
until the computer has shut down in order to process instructions. It is composed of three main stages: the fetch stage, the decode stage, and the execute stage.}}
</ref> It occurs after unit testing and before validation testing. Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing.<ref>Martyn A Ould & Charles Unwin (ed), ''Testing in Software Development'', BCS (1986), p71. Accessed 31 Oct 2014</ref>}}
</ref><ref>
Fact Sheets on the European Union|publisher=European Parliament|access-date=2018-12-06}}</ref> There are many types of intellectual property, and some countries recognize more than others.<ref>
</ref><ref>“Intellectual property”, Black's Law Dictionary, 10th ed. (2014).</ref><ref>
</ref><ref>
</ref><ref>
</ref> The most well-known types are copyrights, patents, trademarks, and trade secrets.}}
</ref> Intelligent agents may also learn or use knowledge to achieve their goals. They may be very simple or very complex. A reflex machine, such as a thermostat, is considered an example of an intelligent agent.<ref>According to the definition given by
</ref>}}
, computer hardware, peripheral devices, humans, and combinations of these.<ref name=“HookwayInterface14”>
</ref> Some computer hardware devices, such as a touchscreen, can both send and receive data through the interface, while others such as a mouse or microphone may only provide an interface to send data to a given system.<ref>
</ref>}}
is said to have Internal Documentation if the notes on how and why various parts of code operate is included within the
as comments. It is often combined with meaningful variable names with the intention of providing potential future programmers a means of understanding the workings of the code. This contrasts with external documentation, where programmers keep their notes and explanations in a separate document.}}
that runs automated tasks (scripts) over the Internet.<ref>
</ref> Typically, bots perform tasks that are both simple and structurally repetitive, at a much higher rate than would be possible for a human alone. The largest use of bots is in web spidering (web crawler), in which an automated script fetches, analyzes and files information from web servers at many times the speed of a human.}}
that directly
instructions written in a
or scripting language, without requiring them to have been previously
into a machine language program.}}
J
that is class-based,
(although not a pure OO language<ref>
</ref>), and designed to have as few implementation
as possible. It is intended to let application developers “write once, run anywhere” (WORA),<ref>
</ref> meaning that
Java code can run on all platforms that support Java without the need for recompilation.<ref name=“design_goals”>
</ref>}}
K
to load into
. As the center of the operating system, the kernel needs to be small, efficient, and loaded into a protected area in the memory so that it cannot be overwritten. It may be responsible for such essential tasks as disk drive management, file management, memory management, process management, etc.}}
L
, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and
,
,
, or
specifications.}}
. It sequentially checks each element of the list until a match is found or the whole list has been searched.
}}
or an assembler and combines them into a single executable file, library file, or another 'object' file. A simpler version that writes its output directly to memory is called the loader, though loading is typically considered a separate process.<ref>
</ref>}}
, where the same value may occur more than once. An instance of a list is a computer representation of the mathematical concept of a finite sequence; the (potentially) infinite analog of a list is a
.<ref>
</ref>
Lists are a basic example of
, as they contain other values. If the same value occurs multiple times, each occurrence is considered a distinct item.}}
, a bug in a program that causes it to operate incorrectly, but not to terminate abnormally (or crash). A logic error produces unintended or undesired output or other behaviour, although it may not immediately be recognized as such.}}
which is largely based on formal logic. Any program written in a logic
is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include Prolog, answer set programming (ASP), and Datalog.}}
M
and statistical models that computer systems use to perform a specific task without using explicit instructions, relying on patterns and inference instead. It is seen as a subset of artificial intelligence. Machine learning algorithms build a mathematical model based on sample data, known as “training data”, in order to make predictions or decisions without being explicitly programmed to perform the task.
}}<ref>< Bishop, C. M. (2006), Pattern Recognition and Machine Learning, Springer,
</ref>}}
. It attempts to integrate existing technologies in new ways and apply them to solve real world problems. The term is the prevalent one for these functions in industrial automation environments but is also used for these functions in other environments such as security and vehicle guidance.}}
</ref><ref>
</ref>}}
</ref>
}}
</ref> A detailed description and analysis of bottom-up mergesort appeared in a report by Goldstine and von Neumann as early as 1948.<ref>
</ref>}}
(OOP), a
associated with a message and an
. An object consists of data and behavior. The data and behavior comprise an interface, which specifies how the object may be utilized by any of various consumers<ref name=“consumerdef001a”>Consumers of an object may consist of various kinds of elements, such as other programs, remote computer systems, or computer programmers who wish to utilize the object as part of their own programs.</ref> of the object.}}
N
, information engineering, and artificial intelligence concerned with the interactions between computers and human (natural) languages, in particular how to program computers to process and analyze large amounts of natural language data. Challenges in natural language processing frequently involve speech recognition, natural language understanding, and natural language generation.}}
that use numerical approximation (as opposed to symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics).}}
O
</ref>}}
.<ref>
</ref> In a general sense object code is a sequence of statements or instructions in a computer language,<ref>
</ref> usually a machine code language (i.e., binary) or an intermediate language such as register transfer language (RTL). The term indicates that the code is the goal or result of the compiling process, with some early sources referring to source code as a “subject program.”}}
, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.}}
based on the concept of “objects”, which can contain data, in the form of
(often known as attributes or properties), and code, in the form of
(often known as methods). A feature of objects is an object's procedures that can access and often modify the data fields of the object with which they are associated (objects have a notion of “this” or “self”). In OOP, computer programs are designed by making them out of objects that interact with one another.<ref>
</ref><ref>
, section 1.6 “Object-Oriented Programming”</ref> OOP languages are diverse, but the most popular ones are class-based, meaning that objects are instances of
, which also determine their types.}}
in which
is released under a license in which the copyright holder grants users the rights to study, change, and distribute the software to anyone and for any purpose.<ref>
</ref> Open-source software may be developed in a collaborative public manner. Open-source software is a prominent example of open collaboration.<ref name=“Open Collaboration”>
</ref>}}
resources, and provides common
for
.}}
</ref> Optical fibers are used most often as a means to transmit light between the two ends of the fiber and find wide usage in fiber-optic communications, where they permit transmission over longer distances and at higher bandwidths (data rates) than electrical cables. Fibers are used instead of metal wires because signals travel along them with less loss; in addition, fibers are immune to electromagnetic interference, a problem from which metal wires suffer.<ref>
</ref>}}
P
</ref> reviews each line of code as it is typed in. The two programmers switch roles frequently.}}
in which many calculations or the execution of processes are carried out simultaneously.<ref>
</ref> Large problems can often be divided into smaller ones, which can then be solved at the same time. There are several different forms of parallel computing: bit-level, instruction-level, data, and task parallelism.}}
, a special kind of variable, used in a
to refer to one of the pieces of data provided as input to the subroutine.
being discussed.}} These pieces of data are the values<ref>
</ref><ref>
</ref><ref>
</ref> of the arguments (often called actual arguments or actual parameters) with which the subroutine is going to be called/invoked. An ordered list of parameters is usually included in the definition of a subroutine, so that, each time the subroutine is called, its arguments for that call are evaluated, and the resulting values can be assigned to the corresponding parameters.}}
, a condition or predicate that must always be true just after the execution of some section of code or after an operation in a formal specification. Postconditions are sometimes tested using assertions within the code itself. Often, postconditions are simply included in the documentation of the affected section of code.}}
, a condition or predicate that must always be true just prior to the execution of some section of code or before an operation in a formal specification. If a precondition is violated, the effect of the section of code becomes undefined and thus may or may not carry out its intended work. Security problems can arise due to incorrect preconditions.}}
or
data structure, but where additionally each element has a “priority” associated with it. In a priority queue, an element with high priority is served before an element with low priority. In some implementations, if two elements have the same priority, they are served according to the order in which they were enqueued, while in other implementations, ordering of elements with the same priority is undefined.}}
Subroutines may be defined within programs, or separately in libraries that can be used by many programs. In different programming languages, a subroutine may be called a routine, subprogram, function, method, or procedure. Technically, these terms all have different definitions. The generic, umbrella term callable unit is sometimes used.<ref name=“U.S. Election Assistance Commission 2007”>
</ref>}}
undergoes, from initial creation to deployment and execution. The phases are edit time, compile time, link time, distribution time, installation time, load time, and run time.}}
to implement
.}}
</ref>}}
</ref><ref name=Bratko2012>
</ref><ref name=Covington1994>
</ref> Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily as a declarative programming language: the program logic is expressed in terms of relations, represented as facts and rules. A computation is initiated by running a query over these relations.<ref>Lloyd, J. W. (1984). Foundations of logic programming. Berlin: Springer-Verlag.
.</ref>}}
Q
. A quantum computer is used to perform such computation, which can be implemented theoretically or physically.<ref name=2018Report>
</ref>
}}
in which the entities in the collection are kept in order and the principal (or only) operations on the collection are the addition of entities to the rear terminal position, known as enqueue, and removal of entities from the front terminal position, known as dequeue.}}
R
R Foundation
The R Core Team asks authors who use R in their data analysis to cite the software using:
- R Core Team (2016). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL http://www.R-project.org/.
}} The R language is widely used among statisticians and data miners for developing statistical software
}} and data analysis.<ref>
</ref>}}
that is the standard in
, the radix is two, because it uses only two digits, 0 and 1, to uniquely specify each number.}}
</ref><ref name=“Radványi”>
</ref><ref name=“Kahate”>
</ref><ref>
</ref>}}
, where a function being defined is applied within its own definition. While this apparently defines an infinite number of instances (function values), it is often done in such a way that no infinite loop or infinite chain of references can occur.}}
,
, or
to a resource, such as an object, a block of memory, disk space, and others. In garbage collection algorithms, reference counts may be used to deallocate objects which are no longer needed.}}
</ref>
}}
</ref> Reliability is closely related to availability, which is typically described as the ability of a component or system to function at a specified moment or interval of time.}}
</ref>) is re-running functional and non-functional tests to ensure that previously developed and tested software still performs after a change.<ref>
</ref> If not, that would be called a regression. Changes that may require regression testing include bug fixes, software enhancements, configuration changes, and even substitution of electronic components.<ref>National Research Council Committee on Aging Avionics in Military Aircraft: ''Aging Avionics in Military Aircraft''. The National Academies Press, 2001, page 2: ″Each technology-refresh cycle requires regression testing.″</ref> As regression test suites tend to grow with each found defect, test automation is frequently involved. Sometimes a change impact analysis is performed to determine an appropriate subset of tests (non-regression analysis<ref>
</ref>).}}
</ref>}}
, and others. Robotics involves design, construction, operation, and use of robots, as well as computer systems for their perception, control, sensory feedback, and information processing. The goal of robotics is to design intelligent machines that can help and assist humans in their day-to-day lives and keep everyone safe.}}
</ref>}}
using exact arithmetic and the result produced by the same algorithm using finite-precision, rounded arithmetic.<ref name=“Forrester_2018”>
</ref> Rounding errors are due to inexactness in the representation of real numbers and the arithmetic operations done with them. This is a form of quantization error.<ref>
</ref> When using approximation equations or algorithms, especially when using finitely many digits to represent real numbers (which in theory have infinitely many digits), one of the goals of numerical analysis is to estimate computation errors.<ref>
</ref> Computation errors, also called numerical errors, include both truncation errors and roundoff errors.<ref>
</ref>}}
</ref>}}
s life cycle, in which the code is being executed on the computer's central processing unit (CPU) as machine code. In other words, “runtime” is the running phase of a program.}}
S
which solves the search problem, namely, to retrieve information stored within some data structure, or calculated in the search space of a problem
, either with discrete or continuous values.}}
</ref><ref name=Weikum01>Gerhard Weikum, Gottfried Vossen (2001): ''Transactional Information Systems'', Elsevier,
</ref> transaction processing (transaction management), and various transactional applications (e.g., transactional memory<ref name=Herlihy1993>Maurice Herlihy and J. Eliot B. Moss. Transactional memory: architectural support for lock-free data structures. Proceedings of the 20th annual international symposium on Computer architecture (ISCA '93). Volume 21, Issue 2, May 1993.</ref> and software transactional memory), both centralized and distributed, a transaction schedule is serializable if its outcome (e.g., the resulting database state) is equal to the outcome of its transactions executed serially, i.e. without overlapping in time. Transactions are normally executed concurrently (they overlap), since this is the most efficient way. Serializability is the major correctness criterion for concurrent transactions' executions
. It is considered the highest level of isolation between transactions, and plays an essential role in concurrency control. As such it is supported in all general purpose database systems. Strong strict two-phase locking (SS2PL) is a popular serializability mechanism utilized in most of the database systems (in various variants) since their early days in the 1970s. }}
</ref> When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object. For many complex objects, such as those that make extensive use of references, this process is not straightforward. Serialization of object-oriented objects does not include any of their associated methods with which they were previously linked.
This process of serializing an object is also called marshalling an object in some situations.://www.ruby-doc.org/core/classes/Marshal.html://caml.inria.fr/pub/docs/manual-ocaml/libref/Marshal.html The opposite operation, extracting a data structure from a series of bytes, is deserialization, (also called unserialization or unmarshalling).}}
</ref> The most common component of an SLA is that the services should be provided to the customer as agreed upon in the contract. As an example, Internet service providers and telcos will commonly include service level agreements within the terms of their contracts with customers to define the level(s) of service being sold in plain language terms. In this case the SLA will typically have a technical definition in mean time between failures (MTBF), mean time to repair or mean time to recovery (MTTR); identifying which party is responsible for reporting faults or paying fees; responsibility for various data rates; throughput; jitter; or similar measurable details.}}
</ref><ref>
</ref> Agents are colloquially known as bots, from robot. They may be embodied, as when execution is paired with a robot body, or as software such as a chatbot executing on a phone (e.g. Siri) or other computing device. Software agents may be autonomous or work together with other agents or people. Software agents interacting with people (e.g. chatbots, human-robot interaction environments) may possess human-like qualities such as natural language understanding and speech, personality or embody humanoid form (see Asimo).}}
</ref>}}
.</ref> Software design may refer to either “all the activity involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying complex systems” or “the activity following requirements specification and before programming, as … [in] a stylized software engineering process.”<ref>
</ref>}}
</ref> Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.<ref>
</ref>}}
</ref><ref name=“ACM 2020”>
</ref><ref name=“Laplante 2007”>
</ref> Software engineering is a computing discipline.<ref>
</ref>}}
</ref>}}
</ref> Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include the process of executing a program or application with the intent of finding software bugs (errors or other defects), and verifying that the software product is fit for use. }}
, which adds an element to the collection, and
, which removes the most recently added element that was not yet removed.
The order in which elements come off a stack gives rise to its alternative name, LIFO (last in, first out). Additionally, a peek operation may give access to the top without modifying the stack.<ref>By contrast, a simple QUEUE operates FIFO (first in, first out).</ref> The name “stack” for this type of structure comes from the analogy to a set of physical items stacked on top of each other. This structure makes it easy to take an item off the top of the stack, while getting to an item deeper in the stack may require taking off multiple other items first.<ref name=“clrs_pages_232-233”>
</ref>}}
</ref> the remembered information is called the state of the system.}}
</ref> A program written in such a language is formed by a sequence of one or more statements. A statement may have internal components (e.g., expressions).}}
</ref>
}}
</ref><ref>
</ref> NoSQL databases are increasingly used in big data and real-time web applications.<ref>
</ref> NoSQL systems are also sometimes called “Not only SQL” to emphasize that they may support SQL-like query languages or sit alongside SQL databases in polyglot-persistent architectures.<ref>
</ref><ref>
</ref>}}
Subroutines may be defined within programs, or separately in libraries that can be used by many programs. In different programming languages, a subroutine may be called a routine, subprogram, function, method, or procedure. Technically, these terms all have different definitions. The generic, umbrella term callable unit is sometimes used.<ref name=“U.S. Election Assistance Commission 2007”>
</ref>}}
</ref> computer algebra, also called symbolic computation or algebraic computation, is a scientific area that refers to the study and development of algorithms and software for manipulating mathematical expressions and other mathematical objects. Although computer algebra could be considered a subfield of scientific computing, they are generally considered as distinct fields because scientific computing is usually based on numerical computation with approximate floating point numbers, while symbolic computation emphasizes exact computation with expressions containing variables that have no given value and are manipulated as symbols.}}
T
at Tetras Translations. Accessed February 25, 2013.</ref><ref>Documenting the New System at IGCSE ICT. Accessed February 25, 2013.</ref> The intended recipient for product technical documentation is both the (proficient)
as well as the administrator/service or maintenance technician. In contrast to a mere “cookbook” manual, technical documentation aims at providing enough information for a user to understand inner and outer dependencies of the product at hand.}}
(ADT) that simulates a hierarchical tree structure, with a root value and subtrees of children with a
, represented as a set of linked
.}}
U
</ref> Contrast
.}}
}}
</ref>
although many people use the two terms interchangeably.
Thus
<nowiki>http:</nowiki>//www.example.com
is a URL, while
www.example.com
is not.<ref>
</ref>}} URLs occur most commonly to reference web pages (http), but are also used for file transfer (ftp), email (mailto), database access (JDBC), and many other applications.}}
</ref> Power users use advanced features of programs, though they are not necessarily capable of computer programming and system administration.}}
) that acts on behalf of a
, such as a web browser that “retrieves, renders and facilitates end user interaction with Web content”.<ref>
</ref> An email reader is a mail user agent.}}
for machines and
, such as computers, home appliances, mobile devices, and other electronic devices, with the focus on maximizing usability and the user experience. The goal of user interface design is to make the user's interaction as simple and efficient as possible, in terms of accomplishing user goals (user-centered design).}}
V
, a variable, or scalar, is a storage location (identified by a memory address) paired with an associated symbolic name (an
), which contains some known or unknown quantity of information referred to as a
. The variable name is the usual way to
the stored value, in addition to referring to the variable itself, depending on the context. This separation of name and content allows the name to be used independently of the exact information it represents. The identifier in computer
can be bound to a value during run time, and the value of the variable may therefore change during the course of
.<ref>
</ref><ref>
</ref>}}
of a computer system. Virtual machines are based on
and attempt to provide the same functionality as a physical computer. Their implementations may involve specialized hardware, software, or a combination of both.}}
, and is an example of the more general V-model. Instead of moving down in a linear way, the process steps are bent upwards after the
phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The horizontal and vertical axes represent time or project completeness (left-to-right) and level of abstraction (coarsest-grain abstraction uppermost), respectively.<ref>Kevin Forsberg and Harold Mooz, “The Relationship of System Engineering to the Project Cycle”, in Proceedings of the First Annual Symposium of National Council on System Engineering, October 1991: 57–65.</ref>}}
W
that systematically browses the World Wide Web, typically for the purpose of Web indexing (web spidering).}}
Fi is a trademark of the non-profit Wi-Fi Alliance, which restricts the use of the term Wi-Fi Certified to products that successfully complete interoperability certification testing.<ref>
</ref><ref>
</ref><ref>
</ref>}}