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 computer programming.
Also machine intelligence.
Intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and other animals. In computer science, 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. 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".
ASCII
See American Standard Code for Information Interchange.
assertion
In computer programming, a statement that a predicate (Boolean-valued function, i.e. a true–false expression) is always true at that point in code execution. It can help a programmer read the code, help a compiler 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 crashes or throws an assertion failure exception.
associative array
An associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection.
Operations associated with this data type allow:
- 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
automata theory
The study of abstract machines and automata, as well as the computational problems that can be solved using them. It is a theory in theoretical computer science and discrete mathematics (a subject of study in both mathematics and computer science).
automated reasoning
An area of computer science 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 artificial intelligence, it also has connections with theoretical computer science, and even philosophy.
[[Douglas Comer]], [https://books.google.com/books?id=tm-evHmOs3oC&dq=%22network+bandwidth%22+%22computer+networks%22&pg=PA99 Computer Networks and Internets], page 99 ff, Prentice Hall 2008.</ref> ''data bandwidth'',<ref>Fred Halsall, [https://books.google.com/books?id=HrXbAAAAMAAJ&q=%100data+bandwidth%100+Introduction to data+communications and computer networks], page 108, Addison-Wesley, 1985.</ref> or ''digital bandwidth''.<ref>[https://books.google.com/books?id=7gqsZmr5HJcC&q=+0digital+bandwidth+0+%22 Cisco Networking Academy Program: CCNA 1 and 2 companion guide, Volym 1–2], Cisco Academy 2003</ref><ref>Behrouz A. Forouzan, ''Data communications and networking'', McGraw-Hill, 2007</ref>"}},"i":2}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[Bayesian programming]]"}},"i":3}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A formalism and a methodology for having a technique to specify [[Probability distribution|probabilistic models]] and solve problems when less than the necessary information is available."}},"i":4}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[benchmark (computing)|benchmark]]"}},"i":5}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"The act of running a {{gli|computer program}}, 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>{{Cite journal| doi = 10.1145/5666.5673| issn = 0001-0782| volume = 29| issue = 3| pages = 218–221| last1 = Fleming| first1 = Philip J.| last2 = Wallace| first2 = John J.| title = How not to lie with statistics: the correct way to summarize benchmark results| journal = Communications of the ACM| date = 1986-03-01| s2cid = 1047380| doi-access = free}}</ref> The term ''benchmark'' is also commonly utilized for the purposes of elaborately designed benchmarking programs themselves."}},"i":6}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[best, worst and average case]]"}},"i":7}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"Expressions of what the {{gli|resource}} usage is ''at least'', ''at most'', and ''on average'', respectively, for a given {{gli|algorithm}}. 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."}},"i":8}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[big data]]"}},"i":9}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A term used to refer to [[data set]]s that are too large or complex for traditional [[data processing|data-processing]] {{gli|application software}} 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>{{Cite journal|last=Breur|first=Tom|date=July 2016|title=Statistical Power Analysis and the contemporary \"crisis\" in social sciences|journal=Journal of Marketing Analytics|language=en|volume=4|issue=2–3|pages=61–65|doi=10.1057/s41270-016-0001-3|issn=2050-3318|doi-access=free}}</ref>"}},"i":10}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[big O notation]]"}},"i":11}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A mathematical notation that describes the [[asymptotic analysis|limiting behavior]] of a [[function (mathematics)|function]] when the argument tends towards a particular value or infinity. It is a member of a family of notations invented by [[Paul Bachmann]],<ref name=Bachmann>{{cite book |first=Paul |last=Bachmann |author-link=Paul Bachmann |title=Analytische Zahlentheorie |trans-title=Analytic Number Theory |language=de |volume=2 |location=Leipzig |publisher=Teubner |date=1894 |url=https://archive.org/stream/dieanalytischeza00bachuoft#page/402/mode/2up}}</ref> [[Edmund Landau]],<ref name=Landau>{{cite book |first=Edmund |last=Landau |author-link=Edmund Landau |title=Handbuch der Lehre von der Verteilung der Primzahlen |publisher=B. G. Teubner |date=1909 |location=Leipzig |trans-title=Handbook on the theory of the distribution of the primes |language=de |page=883 | url=https://archive.org/details/handbuchderlehre01landuoft}}</ref> and others, collectively called ''Bachmann–Landau notation'' or ''asymptotic notation''."}},"i":12}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[binary number]]"}},"i":13}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In mathematics and [[digital electronics]], a number expressed in the base-2 numeral system or binary numeral system, which uses only two symbols: typically [[0 (number)|0 (zero)]] and [[1 (number)|1 (one)]]."}},"i":14}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[binary search algorithm]]"}},"i":15}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also simply '''binary search''', '''half-interval search''',<ref name=\"Williams1976\">{{cite conference|last1=Williams, Jr.|first1=Louis F.|title=A modification to the half-interval search (binary search) method|conference=Proceedings of the 14th ACM Southeast Conference|date=22 April 1976|pages=95–101|doi=10.1145/503561.503582|url=https://dl.acm.org/citation.cfm?doid=503561.503582|publisher=ACM|access-date=29 June 2018|archive-url=https://web.archive.org/web/20170312215255/http://dl.acm.org/citation.cfm?doid=503561.503582|archive-date=12 March 2017|url-status=live|df=dmy-all|doi-access=free}}</ref> '''logarithmic search''',{{Sfn|Knuth|1998|loc=§6.2.1 (\"Searching an ordered table\"), subsection \"Binary search\"}} or '''binary chop'''.{{Sfn|Butterfield|Ngondi|2016|p=46}}"}},"i":16}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A {{gli|search algorithm}} that finds the position of a target value within a [[sorted array]].<ref>{{Introduction to Algorithms|edition=3|pages=39}}</ref>"}},"i":17}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[binary tree]]"}},"i":18}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A [[tree structure|tree]] {{gli|data structure}} in which each node has at most two [[child node|children]], which are referred to as the ''{{visible anchor|left child}}'' and the ''{{visible anchor|right child}}''. 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\">{{cite book|author1=Rowan Garnier|author2=John Taylor|title=Discrete Mathematics: Proofs, Structures and Applications, Third Edition|url=https://books.google.com/books?id=WnkZSSc4IkoC&pg=PA620|year=2009|publisher=CRC Press|isbn=978-1-4398-1280-8|page=620}}</ref> Some authors allow the binary tree to be the empty set as well.<ref name=\"Skiena2009\">{{cite book|author=Steven S Skiena|title=The Algorithm Design Manual|url=https://books.google.com/books?id=7XUSn0IKQEgC&pg=PA77|year=2009|publisher=Springer Science & Business Media|isbn=978-1-84800-070-4|page=77}}</ref>"}},"i":19}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[bioinformatics]]"}},"i":20}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"An interdisciplinary field that combines [[biology]], {{gli|computer science}}, [[information engineering]], [[mathematics]], and [[statistics]] to develop methods and [[software tool]]s for analyzing and interpreting biological data. Bioinformatics is widely used for ''[[in silico]]'' analyses of biological queries using mathematical and statistical techniques."}},"i":21}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[bit]]"}},"i":22}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A [[Units of information|basic unit of information]] used in {{gli|computing}} and digital communications; a portmanteau of ''binary digit''. A {{gli|binary number|binary}} digit can have one of two possible {{gli|value|values}}, and may be physically represented with a two-state device. These state values are most commonly represented as either a {{gaps|0|or|1}}.<ref name=\"Mackenzie_1980\">{{cite book |url=https://textfiles.meulie.net/bitsaved/Books/Mackenzie_CodedCharSets.pdf |title=Coded Character Sets, History and Development |series=The Systems Programming Series |author-last=Mackenzie |author-first=Charles E. |date=1980 |edition=1 |publisher=[[Addison-Wesley Publishing Company, Inc.]] |isbn=978-0-201-14460-4 |lccn=77-90165 |page=x |access-date=2019-08-25 |archive-url=https://web.archive.org/web/20160526172151/https://textfiles.meulie.net/bitsaved/Books/Mackenzie_CodedCharSets.pdf |archive-date=May 26, 2016 |url-status=live |df=mdy-all }}</ref>"}},"i":23}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[bit rate]] (''R'')"}},"i":24}},"\n\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also '''bitrate'''."}},"i":25}},"\n\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In [[telecommunications]] and {{gli|computing}}, the number of {{gli|bit|bits}} that are conveyed or processed per unit of time.<ref>{{cite book |url = https://books.google.com/books?id=-kNn_p6WA38C&q=bit+%22rate+R%22&pg=PA21 |title=Data Communications and Computer Networks | first =Prakash C | last = Gupta |publisher=PHI Learning |year= 2006 |access-date=10 July 2011|isbn=9788120328464 }}</ref>"}},"i":26}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[blacklist (computing)|blacklist]]"}},"i":27}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also '''block list'''."}},"i":28}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In {{gli|computing}}, a basic [[access control]] mechanism that allows through all elements (email addresses, users, passwords, [[URLs]], [[IP address]]es, [[domain name]]s, file [[MD5 Hash|hashes]], etc.), except those explicitly mentioned in a list of prohibited elements. Those items on the list are denied access. The opposite is a {{gli|whitelist}}, which means only items on the list are allowed through whatever gate is being used while all other elements are blocked. A [[Greylisting (email)|greylist]] contains items that are temporarily blocked (or temporarily allowed) until an additional step is performed."}},"i":29}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[BMP file format]]"}},"i":30}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also '''bitmap image file''', '''device independent bitmap (DIB) file format''', or simply '''bitmap'''."}},"i":31}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A [[raster graphics]] [[image file format]] used to store [[bitmap]] digital images independently of the [[display device]] (such as a [[graphics adapter]]), used especially on [[Microsoft Windows]]<ref name=\"bmp\">{{cite book|title=Encyclopedia of Graphics File Formats|edition=Second|date=April 1996|author=James D. Murray|author2=William vanRyper|isbn=978-1-56592-161-0|publisher=[[O'Reilly Media|O'Reilly]]|at=bmp|url=https://archive.org/details/mac_Graphics_File_Formats_Second_Edition_1996|access-date=2014-03-07}}</ref> and [[OS/2]]<ref name=\"os2bmp\">{{cite book|title=Encyclopedia of Graphics File Formats|edition=Second|date=April 1996|author=James D. Murray|author2=William vanRyper|isbn=978-1-56592-161-0|publisher=[[O'Reilly Media|O'Reilly]]|at=os2bmp|url=https://archive.org/details/mac_Graphics_File_Formats_Second_Edition_1996|access-date=2014-03-07}}</ref> operating systems."}},"i":32}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[Boolean data type]]"}},"i":33}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A [[data type]] that has one of two possible values (usually denoted ''true'' and ''false''), intended to represent the two [[truth value]]s of [[logic]] and [[Boolean algebra]]. It is named after [[George Boole]], who first defined an algebraic system of logic in the mid-19th century. The Boolean data type is primarily associated with [[Conditional (computer programming)|conditional]] statements, which allow different actions by changing [[control flow]] depending on whether a programmer-specified Boolean ''condition'' evaluates to true or false.{{Sfn|Nicholls|1975|pp=[https://archive.org/details/structuredesigno0000nich/page/158/mode/2up?q=Boole 159]–161, [https://archive.org/details/structuredesigno0000nich/page/318/mode/2up?q=%22logical+operators%22 318]–320, [https://archive.org/details/structuredesigno0000nich/page/322/mode/2up?q=%22conditional+expression%22 322]–325}} It is a special case of a more general ''logical data type'' (see [[propositional logic]])—i.e. logic need not always be Boolean."}},"i":34}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[Boolean expression]]"}},"i":35}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"An {{gli|expression}} used in a {{gli|programming language}} 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 data type|Boolean-typed]] variables, Boolean-valued operators, and [[Boolean-valued function]]s.<ref>{{citation\n | last1 = Gries | first1 = David | author1-link = David Gries\n | last2 = Schneider | first2 = Fred B. | author2-link = Fred B. Schneider\n | contribution = Chapter 2. Boolean Expressions\n | isbn = 9780387941158\n | page = 25ff\n | publisher = Springer\n | series = Monographs in Computer Science\n | title = A Logical Approach to Discrete Math\n | url = https://books.google.com/books?id=ZWTDQ6H6gsUC&pg=PA25\n | year = 1993}}</ref>"}},"i":36}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[Boolean algebra]]"}},"i":37}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In mathematics and [[mathematical logic]], the branch of [[algebra]] in which the values of the variables are the [[truth value]]s ''true'' and ''false'', usually denoted 1 and 0, respectively. Contrary to [[elementary algebra]], where the values of the variables are numbers and the prime operations are addition and multiplication, the main operations of Boolean algebra are the [[Logical conjunction|conjunction]] ''and'' (denoted as ∧), the [[disjunction]] ''or'' (denoted as ∨), and the [[negation]] ''not'' (denoted as ¬).{{Sfn|Pohl|Shaw|1981|pp=[https://archive.org/details/natureofcomputat0000pohl/page/101/mode/2up?q=%22Boolean+Algebra%22 101]–105}} It is thus a formalism for describing logical relations in the same way that elementary algebra describes numeric relations."}},"i":38}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[byte]]"}},"i":39}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A [[units of information|unit of digital information]] that most commonly consists of eight {{gli|bit|bits}}, representing a {{gli|binary number}}. Historically, the byte was the number of bits used to encode a single [[character (computing)|character]] of text in a computer<ref name=\"Buchholz_1962\">{{anchor|Buchholz-1962}}{{citation |title=Planning a Computer System – Project Stretch |author-first1=Gerrit Anne |author-last1=Blaauw |author-link1=Gerrit Anne Blaauw |author-first2=Frederick Phillips |author-last2=Brooks, Jr. |author-link2=Frederick Phillips Brooks, Jr. |author-first3=Werner |author-last3=Buchholz |author-link3=Werner Buchholz |editor-first=Werner |editor-last=Buchholz |editor-link=Werner Buchholz |publisher=[[McGraw-Hill Book Company, Inc.]] / The Maple Press Company, York, PA. |lccn=61-10466 |year=1962 |chapter=4: Natural Data Units |pages=39–40 |chapter-url=http://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/Buchholz_102636426.pdf |access-date=2017-04-03 |url-status=live |archive-url=https://web.archive.org/web/20170403014651/http://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/Buchholz_102636426.pdf |archive-date=2017-04-03 |quote=[…] Terms used here to describe the structure imposed by the machine design, in addition to ''[[bit]]'', are listed below.<br />''Byte'' denotes a group of bits used to encode a character, or the number of bits transmitted in parallel to and from input-output units. A term other than ''[[character (computing)|character]]'' is used here because a given character may be represented in different applications by more than one code, and different codes may use different numbers of bits (i.e., different byte sizes). In input-output transmission the grouping of bits may be completely arbitrary and have no relation to actual characters. (The term is coined from ''[[bite]]'', but respelled to avoid accidental mutation to ''bit''.)<br />A ''[[Word (unit)|word]]'' consists of the number of data bits transmitted in parallel from or to memory in one memory cycle. [[Word size]] is thus defined as a structural property of the memory. (The term ''[[catena (unit)|catena]]'' was coined for this purpose by the designers of the [[Groupe Bull|Bull]] {{ill|Bull Gamma 60{{!}}GAMMA 60|fr|Gamma 60}} computer.)<br />''[[Block (data storage)|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\">{{citation |author-first=Robert William |author-last=Bemer |author-link=Robert William Bemer |title=A proposal for a generalized card code of 256 characters |journal=[[Communications of the ACM]] |volume=2 |number=9 |pages=19–23 |year=1959 |doi=10.1145/368424.368435|s2cid=36115735 |doi-access=free }}</ref> and for this reason it is the smallest [[address space|addressable]] unit of {{gli|memory}} in many {{gli|computer architecture|computer architectures}}."}},"i":40}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[booting]]"}},"i":41}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"The procedures implemented in starting up a [[computer]] or [[computer appliance]] until it can be used. It can be initiated by hardware such as a button press or by a software command. After the power is switched on, the computer is relatively dumb and can read only part of its storage called {{gli|read-only memory}}. There, a small program is stored called [[firmware]]. It does [[power-on self-test]]s and, most importantly, allows access to other types of memory like a [[hard disk]] and [[main memory]]. The firmware loads bigger [[computer program|program]]s into the computer's [[random-access memory|main memory]] and runs it."}},"i":42}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":43}}]}'/>
- bandwidth
- The maximum rate of data transfer across a given path. Bandwidth may be characterized as network bandwidth, data bandwidth, or digital bandwidth.
- Bayesian programming
- A formalism and a methodology for having a technique to specify probabilistic models and solve problems when less than the necessary information is available.
- benchmark
- The act of running a computer program, 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. The term benchmark is also commonly utilized for the purposes of elaborately designed benchmarking programs themselves.
- best, worst and average case
- Expressions of what the resource usage is at least, at most, and on average, respectively, for a given algorithm. 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.
- big data
- A term used to refer to data sets that are too large or complex for traditional data-processing application software 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.
- big O notation
- A mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity. It is a member of a family of notations invented by Paul Bachmann, Edmund Landau, and others, collectively called Bachmann–Landau notation or asymptotic notation.
- binary number
- In mathematics and digital electronics, a number expressed in the base-2 numeral system or binary numeral system, which uses only two symbols: typically 0 (zero) and 1 (one).
- binary search algorithm
Also block list.
- In computing, 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 whitelist, 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.
- BMP file format
Also cypher.
- In cryptography, an algorithm for performing encryption or decryption—a series of well-defined steps that can be followed as a procedure.
- class
- In object-oriented programming, 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 subroutine that creates objects), and as the type of objects generated by instantiating the class; these distinct concepts are easily conflated.
- class-based programming
Also theoretical neuroscience or mathematical neuroscience.
- A branch of neuroscience which employs mathematical models, theoretical analysis, and abstractions of the brain to understand the principles that govern the development, structure, physiology, and cognitive abilities of the nervous system.
- computational physics
- Is the study and implementation of numerical analysis to solve problems in physics for which a quantitative theory already exists. Historically, computational physics was the first application of modern computers in science, and is now a subset of computational science.
- computational science
Also data network.
- A digital telecommunications network which allows nodes to share resources. In computer networks, computing devices exchange data with each other using connections (data links) between nodes. These data links are established over cable media such as wires or optic cables, or wireless media such as Wi-Fi.
- computer program
- Is a collection of instructions that can be executed by a computer to perform a specific task.
- computer programming
- The process of designing and building an executable computer program for accomplishing a specific computing task. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms in a chosen programming language (commonly referred to as coding). The source code 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 application domain, specialized algorithms, and formal logic.
- computer science
- The theory, experimentation, and engineering that form the basis for the design and use of computers. It involves the study of algorithms that process, store, and communicate digital information. A computer scientist specializes in the theory of computation and the design of computational systems.
- computer scientist
- A person who has acquired the knowledge of computer science, the study of the theoretical foundations of information and computation and their application.
- computer security
Also flow of control.
- The order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an imperative programming language from a declarative programming language.
- Creative Commons (CC)
- An American non-profit organization devoted to expanding the range of creative works available for others to build upon legally and to share. The organization has released several copyright-licenses, known as Creative Commons licenses, free of charge to the public.
- cryptography
- Or cryptology, is the practice and study of techniques for secure communication in the presence of third parties called adversaries. More generally, cryptography is about constructing and analyzing protocols that prevent third parties or the public from reading private messages; various aspects in information security such as data confidentiality, data integrity, authentication, and non-repudiation 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.
- CSV
- See comma-separated values.
- cyberbullying
sshd is a daemon that serves incoming SSH connections.
- Data
- data center
discrete event simulation (DES)
- A model of the operation of a system as a discrete sequence of events in time. Each event occurs at a particular instant in time and marks a change of state in the system. 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.
- disk storage
- (Also sometimes called drive storage) is a general category of storage mechanisms where data is recorded by various electronic, magnetic, optical, or mechanical changes to a surface layer of one or more rotating disks. A disk drive is a device implementing such a storage mechanism. Notable types are the hard disk drive (HDD) containing a non-removable disk, the floppy disk drive (FDD) and its removable floppy disk, and various optical disc drives (ODD) and associated optical disc media.
- distributed computing
- A field of computer science 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. 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. Examples of distributed systems vary from SOA-based systems to massively multiplayer online games to peer-to-peer applications.
- divide and conquer algorithm
- An algorithm design paradigm based on multi-branched recursion. A divide-and-conquer algorithm 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.
- DNS
- See Domain Name System.
- documentation
- Written text or illustration that accompanies computer software or is embedded in the source code. It either explains how it operates or how to use it, and may mean different things to people in different roles.
- domain
- Is the targeted subject area of a computer program. It is a term used in software engineering. Formally it represents the target subject of a specific programming project, whether narrowly or broadly defined.
- Domain Name System (DNS)
- A hierarchical and decentralized naming system for computers, services, or other resources connected to the Internet 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.
- double-precision floating-point format
- A computer number format. It represents a wide dynamic range of numerical values by using a floating radix point.
- download
- In computer networks, to receive data from a remote system, typically a server such as a web server, an FTP server, an email server, or other similar systems. This contrasts with uploading, 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.
{{Cite journal|last=Kessler|first=Gary|date=November 17, 2006|title=An Overview of Cryptography|url=https://www.garykessler.net/library/crypto.html|journal=Princeton University}}</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."}},"i":6}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[event (computing)|event]]"}},"i":7}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"An action or occurrence recognized by software, often originating [[asynchronous I/O|asynchronously]] from the external environment, that may be [[Event handler|handled]] by the software. Because an event is an entity which encapsulates the action and the contextual variables triggering the action, the acrostic mnemonic \"'''E'''xecution '''V'''ariable '''E'''ncapsulating '''N'''amed '''T'''rigger\" is often used to clarify the concept."}},"i":8}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[event-driven programming]]"}},"i":9}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A {{gli|programming paradigm}} in which the {{gli|control flow|flow of the program}} is determined by {{gli|event|events}} such as user actions ([[computer mouse|mouse]] clicks, key presses), [[sensor]] outputs, or [[message passing|messages]] from other programs or {{gli|thread|threads}}. Event-driven programming is the dominant paradigm used in [[graphical user interface]]s and other applications (e.g. JavaScript [[web application]]s) that are centered on performing certain actions in response to {{gli|input/output|user input}}. This is also true of programming for [[device driver]]s (e.g. [[P (programming language)|P]] in USB device driver stacks<ref>{{cite web |url=https://www.microsoft.com/en-us/research/publication/p-safe-asynchronous-event-driven-programming/ |title=P: Safe Asynchronous Event-Driven Programming |author=Vivek Gupta |author2=Ethan Jackson |author3=Shaz Qadeer |author4=Sriram Rajamani |website=[[Microsoft]] |date=November 2012 |access-date=20 February 2017}}</ref>)."}},"i":10}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[evolutionary computing]]"}},"i":11}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A family of {{gli|algorithm|algorithms}} for [[global optimization]] inspired by [[biological evolution]], and the subfield of {{gli|artificial intelligence}} and {{gli|soft computing}} 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."}},"i":12}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[executable]]"}},"i":13}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also '''executable code''', '''executable file''', '''executable program''', or simply '''executable'''."}},"i":14}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"Causes a computer \"to perform indicated tasks according to encoded [[instruction (computer science)|instructions]],\"<ref>{{cite web |url=https://www.merriam-webster.com/dictionary/executable |title=executable |access-date=2008-07-19 |work=Merriam-Webster's Online Dictionary |publisher=[[Merriam-Webster]]}}</ref> as opposed to a [[Data (computing)|data file]] that must be [[parser|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."}},"i":15}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[execution (computing)|execution]]"}},"i":16}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In [[computer engineering|computer]] and software engineering is the process by which a [[computer]] or [[virtual machine]] executes the instructions of a [[computer program]]. Each instruction of a program is a description of a particular \naction which to be carried out in order for a specific problem to be solved; as instructions of a program and therefore the actions they describe are being carried out by an executing machine, specific effects are produced in accordance to the [[Formal semantics of programming languages|semantics]] of the instructions being executed. "}},"i":17}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[exception handling]]"}},"i":18}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"The process of responding to the occurrence, during {{gli|computation}}, of ''exceptions'' – anomalous or exceptional conditions requiring special processing – often disrupting the normal flow of {{gli|computer program|program}} {{gli|execution}}. It is provided by specialized {{gli|programming language}} constructs, [[computer hardware]] mechanisms like [[interrupt]]s, or [[operating system]] [[inter-process communication|IPC]] facilities like [[Signal (IPC)|signals]]."}},"i":19}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"Existence detection"}},"i":20}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"An existence check before reading a file can catch and/or prevent a fatal error."}},"i":21}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[expression (computer science)|expression]]"}},"i":22}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In a {{gli|programming language}}, a combination of one or more {{gli|constant|constants}}, {{gli|variable|variables}}, {{gli|operator|operators}}, and {{gli|function|functions}} that the programming language interprets (according to its particular [[Order of operations|rules of precedence]] and of association) and computes to produce (\"to return\", in a {{gli|state|stateful}} environment) another value. This process, as for [[mathematical expression]]s, is called evaluation."}},"i":23}},"\n\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":24}}]}'/>
- edge device
- A device which provides an entry point into enterprise or service provider core networks. Examples include routers, routing switches, integrated access devices (IADs), multiplexers, and a variety of metropolitan area network (MAN) and wide area network (WAN) access devices. Edge devices also provide connections into carrier and service provider networks. An edge device that connects a local area network to a high speed switch or backbone (such as an ATM switch) may be called an edge concentrator.
- emulator
- Hardware or software that enables one computer system (called the host) to behave like another computer system.
- encryption
- In cryptography, encryption is the process of encoding information. This process converts the original representation of the information, known as plaintext, into an alternative form known as ciphertext. Ideally, only authorized parties can decipher a ciphertext back to plaintext and access the original information. Encryption does not itself prevent interference but denies the intelligible content to a would-be interceptor. For technical reasons, an encryption scheme usually uses a pseudo-random encryption key generated by an algorithm. It is possible to decrypt the message without possessing the key, but, for a well-designed encryption scheme, considerable computational resources and skills are required. An authorized recipient can easily decrypt the message with the key provided by the originator to recipients but not to unauthorized users. Historically, various forms of encryption have been used to aid in cryptography. Early encryption techniques were often utilized in military messaging. Since then, new techniques have emerged and become commonplace in all areas of modern computing. Modern encryption schemes utilize the concepts of public-key and symmetric-key. Modern encryption techniques ensure security because modern computers are inefficient at cracking the encryption.
- event
- An action or occurrence recognized by software, often originating asynchronously from the external environment, that may be handled by the software. Because an event is an entity which encapsulates the action and the contextual variables triggering the action, the acrostic mnemonic "Execution Variable Encapsulating Named Trigger" is often used to clarify the concept.
- event-driven programming
- A programming paradigm in which the flow of the program is determined by events such as user actions (mouse clicks, key presses), sensor outputs, or messages from other programs or threads. 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 user input. This is also true of programming for device drivers (e.g. P in USB device driver stacks).
- evolutionary computing
- A family of algorithms for global optimization inspired by biological evolution, and the subfield of artificial intelligence and soft computing 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.
- executable
significand×baseexponent,
where significand is an integer, base is an integer greater than or equal to two, and exponent is also an integer.
For example:
- game theory
- The study of mathematical models of strategic interaction between rational decision-makers. It has applications in all fields of social science, as well as in logic and computer science. 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.
- garbage in, garbage out (GIGO)
- A term used to describe the concept that flawed or nonsense input data produces nonsense output or "garbage". It can also refer to the unforgiving nature of programming, in which a poorly written program might produce nonsensical behavior.
- Graphics Interchange Format
- gigabyte
- A multiple of the unit byte for digital information. The prefix giga means 10 in the International System of Units (SI). Therefore, one gigabyte is 1000000000bytes. The unit symbol for the gigabyte is GB.
- global variable
- In computer programming, a variable with global scope, 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.
- graph theory
- In mathematics, the study of graphs, which are mathematical structures used to model pairwise relations between objects. A graph in this context is made up of vertices (also called nodes or points) which are connected by edges (also called links or lines). A distinction is made between undirected graphs, where edges link two vertices symmetrically, and directed graphs, where edges link two vertices asymmetrically.
{{Introduction to Algorithms|edition=3|pages=151–152}}</ref> tree that satisfies the ''heap property:'' if P is a parent [[Node (computer science)|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."}},"i":10}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[heapsort]]"}},"i":11}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A [[comparison sort|comparison-based]] [[sorting algorithm]]. Heapsort can be thought of as an improved [[selection sort]]: like that algorithm, it divides its input into a sorted and an unsorted region, and it iteratively shrinks the unsorted region by extracting the largest element and moving that to the sorted region. The improvement consists of the use of a [[heap (data structure)|heap]] data structure rather than a linear-time search to find the maximum.<ref>{{cite book |first=Steven |last=Skiena |chapter=Sorting and Searching |date=2012 |author-link=Steven Skiena |title=The Algorithm Design Manual |url=https://archive.org/details/algorithmdesignm00skie_772 |url-access=limited |publisher=Springer |page=[https://archive.org/details/algorithmdesignm00skie_772/page/n120 109] |isbn=978-1-84800-069-8 |quote=[H]eapsort is nothing but an implementation of selection sort using the right data structure.|doi=10.1007/978-1-84800-070-4_4}}<!--DOI for chapter--></ref>"}},"i":12}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[human-computer interaction]] (HCI)"}},"i":13}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"Researches the design and use of computer technology, focused on the interfaces between people ([[user (computing)|users]]) and computers. Researchers in the field of HCI both observe the ways in which humans interact with computers and design technologies that let humans interact with computers in novel ways. As a field of research, human–computer interaction is situated at the intersection of {{gli|computer science}}, [[behavioral sciences]], [[design]], [[media studies]], and [[Outline of human–computer interaction#Related fields|several other fields of study]]."}},"i":14}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":15}}]}'/>
- handle
- In computer programming, a handle is an abstract reference to a resource that is used when application software references blocks of memory or objects that are managed by another system like a database or an operating system.
- hard problem
- Computational complexity theory 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 algorithm.
- hash function
- Any function that can be used to map data of arbitrary size to data of a fixed size. The values returned by a hash function are called hash values, hash codes, digests, or simply hashes. Hash functions are often used in combination with a hash table, a common data structure used in computer software for rapid data lookup. Hash functions accelerate table or database lookup by detecting duplicated records in a large file.
- hash table
- In computing, a hash table (hash map) is a data structure that implements an associative array abstract data type, a structure that can map keys to values. 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.
- heap
- A specialized tree-based data structure which is essentially an almost complete 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. The node at the "top" of the heap (with no parents) is called the root node.
- heapsort
- A comparison-based sorting algorithm. Heapsort can be thought of as an improved selection sort: like that algorithm, it divides its input into a sorted and an unsorted region, and it iteratively shrinks the unsorted region by extracting the largest element and moving that to the sorted region. The improvement consists of the use of a heap data structure rather than a linear-time search to find the maximum.
- human-computer interaction (HCI)
- Researches the design and use of computer technology, focused on the interfaces between people (users) and computers. Researchers in the field of HCI both observe the ways in which humans interact with computers and design technologies that let humans interact with computers in novel ways. As a field of research, human–computer interaction is situated at the intersection of computer science, behavioral sciences, design, media studies, and several other fields of study.
{{Cite book|title=ISO/IEC/IEEE International Standard - Systems and software engineering|publisher=ISO/IEC/IEEE 24765:2010(E)|year=2010|pages=vol., no., pp.1–418, 15 Dec. 2010}}</ref> It occurs after [[unit testing]] and before [[Software verification and validation|validation testing]]. Integration testing takes as its input [[module (programming)|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>[https://books.google.com/books?id=utFCImZOTEIC&dq=integration+test&pg=PA73 Martyn A Ould & Charles Unwin (ed), ''Testing in Software Development'', BCS (1986), p71]. Accessed 31 Oct 2014</ref>"}},"i":31}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[intellectual property]] (IP)"}},"i":32}},{"template":{"target":{"wt":"anchor","href":"./Template:Anchor"},"params":{"1":{"wt":"intellectual property"}},"i":33}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A category of legal property that includes intangible creations of the human intellect.<ref>{{Cite book|url=https://www.wipo.int/publications/en/details.jsp?id=4080|title=Understanding Industrial Property|publisher=World Intellectual Property Organization|doi=10.34667/tind.28945|access-date=2018-12-06|author1=World Intellectual Property Organization (WIPO)|year=2016|isbn=9789280525885}}</ref><ref>{{Cite web|url=https://www.europarl.europa.eu/factsheets/en/sheet/36/intellectual-industrial-and-commercial-property|title=Intellectual, industrial and commercial property {{!}} 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>{{Cite web |url=https://www.wto.org/english/tratop_e/trips_e/intel1_e.htm |title=What are intellectual property rights? |website=World Trade Organization |access-date=2016-05-23}}</ref><ref>\"Intellectual property\", ''Black's Law Dictionary'', 10th ed. (2014).</ref><ref>{{Cite web|url=https://www.wipo.int/edocs/pubdocs/en/wipo_pub_909_2016.pdf|title=Understanding Copyright and Related Rights|publisher=World Intellectual Property Organization|page=4|access-date=2018-12-06}}</ref><ref>{{Cite web|url=https://www.wipo.int/edocs/pubdocs/en/wipo_pub_450_2020.pdf|title=What is Intellectual Property?|publisher=World Intellectual Property Organization (WIPO)|access-date=2018-12-07|archive-date=2025-04-03|archive-url=https://web.archive.org/web/20250403024202/https://www.wipo.int/edocs/pubdocs/en/wipo_pub_450_2020.pdf|url-status=live}}</ref><ref>{{Cite web|url=https://www.wipo.int/edocs/pubdocs/en/wipo_pub_895_2016.pdf|title=Understanding Industrial Property|publisher=World Intellectual Property Organization (WIPO)|access-date=2018-12-07}}</ref> The most well-known types are [[copyright]]s, [[patent]]s, [[trademark]]s, and [[trade secret]]s."}},"i":34}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[intelligent agent]]"}},"i":35}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In [[artificial intelligence]], an '''intelligent agent''' ('''IA''') refers to an [[autonomous]] entity which acts, directing its activity towards achieving goals (i.e. it is an [[Software agent|agent]]), upon an [[Environment (biophysical)|environment]] using observation through sensors and consequent actuators (i.e. it is intelligent).<ref>{{Cite journal|last1=Anderson|first1=Michael|last2=Anderson|first2=Susan Leigh|date=2007-12-15|title=Machine Ethics: Creating an Ethical Intelligent Agent|url=https://ojs.aaai.org/index.php/aimagazine/article/view/2065|journal=AI Magazine|language=en|volume=28|issue=4|pages=15|doi=10.1609/aimag.v28i4.2065|s2cid=17033332 |issn=2371-9621}}</ref> Intelligent agents may also [[machine learning|learn]] or use [[knowledge representation|knowledge]] to achieve their goals. They may be very simple or [[Complexity|very complex]]. A reflex machine, such as a [[thermostat]], is considered an example of an intelligent agent.<ref>According to the definition given by {{harvtxt|Russell|Norvig|2003|loc=chpt. 2}}</ref>"}},"i":36}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[interface (computing)|interface]]"}},"i":37}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A shared boundary across which two or more separate components of a [[computer system]] exchange information. The exchange can be between {{gli|software}}, [[computer hardware]], [[peripheral]] devices, [[User interface|humans]], and combinations of these.<ref name=\"HookwayInterface14\">{{cite book |url=https://books.google.com/books?id=BQM_AwAAQBAJ |chapter=Chapter 1: The Subject of the Interface |title=Interface |author=Hookway, B. |publisher=MIT Press |pages=1–58 |year=2014 |isbn=9780262525503}}</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>{{cite encyclopedia\n | year =2000\n | title =IEEE 100 - The Authoritative Dictionary Of IEEE Standards Terms \n | publisher =IEEE Press\n | location =NYC, NY, USA\n | isbn =9780738126012\n | pages =574–575\n}}</ref>"}},"i":38}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[internal documentation]]"}},"i":39}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"Computer {{gli|software}} is said to have Internal Documentation if the notes on how and why various parts of code operate is included within the {{gli|source code}} as comments. It is often combined with meaningful [[variable (programming)|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."}},"i":40}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[internet]]"}},"i":41}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"The global system of interconnected [[computer network]]s that use the [[Internet protocol suite]] (TCP/IP) to link devices worldwide. It is a ''network of networks'' that consists of private, public, academic, business, and government networks of local to global scope, linked by a broad array of electronic, wireless, and optical networking technologies."}},"i":42}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[internet bot]]"}},"i":43}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also '''web robot''', '''robot''', or simply '''bot'''."}},"i":44}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A {{gli|software application}} that runs automated tasks (scripts) over the [[Internet]].<ref>{{cite book |url=https://archive.org/details/malicio_dun_2009_00_4004 |url-access=registration |title=Malicious Bots: An Inside Look into the Cyber-Criminal Underground of the Internet |last1=Dunham |first1=Ken |last2=Melnick |first2=Jim |publisher=CRC Press |year=2008 |isbn=9781420069068 }}</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 crawler|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]]."}},"i":45}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[interpreter (computing)|interpreter]]"}},"i":46}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A {{gli|computer program}} that directly {{gli|execution|executes}} instructions written in a {{gli|programming language|programming}} or [[scripting language]], without requiring them to have been previously {{gli|compiler|compiled}} into a [[machine language]] program."}},"i":47}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[invariant (computer science)|invariant]]"}},"i":48}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"One can encounter invariants that can be relied upon to be true during the execution of a program, or during some portion of it. It is a [[logical assertion]] that is always held to be true during a certain phase of execution. For example, a [[loop invariant]] is a condition that is true at the beginning and the end of every execution of a loop."}},"i":49}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[iteration]]"}},"i":50}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"Is the repetition of a process in order to generate an outcome. The sequence will approach some end point or end value. Each repetition of the process is a single iteration, and the outcome of each iteration is then the starting point of the next iteration. In [[mathematics]] and [[computer science]], iteration (along with the related technique of [[recursion]]) is a standard element of [[algorithm]]s."}},"i":51}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":52}}]}'/>
- identifier
- In computer languages, identifiers are tokens (also called symbols) which name language entities. Some of the kinds of entities an identifier might denote include variables, types, labels, subroutines, and packages.
- IDE
- Integrated development environment.
- image processing
- imperative programming
- A programming paradigm that uses statements that change a program's state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program consists of commands for the computer to perform. Imperative programming focuses on describing how a program operates.
- incremental build model
- A method of software development where the product is designed, implemented and tested incrementally (a little more is added each time) until the product is finished. It involves both development and maintenance. The product is defined as finished when it satisfies all of its requirements. This model combines the elements of the waterfall model with the iterative philosophy of prototyping.
- information space analysis
- A deterministic method, enhanced by machine intelligence, for locating and assessing resources for team-centric efforts.
- information visualization
- inheritance
- In object-oriented programming, the mechanism of basing an object or class 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.
- input/output (I/O)
Also web robot, robot, or simply bot.
- A software application that runs automated tasks (scripts) over the Internet. 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.
- interpreter
- A computer program that directly executes instructions written in a programming or scripting language, without requiring them to have been previously compiled into a machine language program.
- invariant
- One can encounter invariants that can be relied upon to be true during the execution of a program, or during some portion of it. It is a logical assertion that is always held to be true during a certain phase of execution. For example, a loop invariant is a condition that is true at the beginning and the end of every execution of a loop.
- iteration
- Is the repetition of a process in order to generate an outcome. The sequence will approach some end point or end value. Each repetition of the process is a single iteration, and the outcome of each iteration is then the starting point of the next iteration. In mathematics and computer science, iteration (along with the related technique of recursion) is a standard element of algorithms.
{{cite web|url=https://stackoverflow.com/questions/12836522/java-is-pure-object-oriented-or-not|title=Java is pure object oriented or not?|website=Stack Overflow|access-date=2019-05-24}}</ref>), and designed to have as few implementation {{gli|dependency|dependencies}} as possible. It is intended to let [[application developer]]s \"[[write once, run anywhere]]\" (WORA),<ref>{{cite web|url=http://www.computerweekly.com/Articles/2002/05/02/186793/write-once-run-anywhere.htm|title=Write once, run anywhere?|date=May 2, 2002|publisher=[[Computer Weekly]]|access-date=2009-07-27}}</ref> meaning that {{gli|compiler|compiled}} Java code can run on all platforms that support Java without the need for recompilation.<ref name=\"design_goals\">{{cite web|url=https://www.oracle.com/technetwork/java/intro-141325.html|title=1.2 Design Goals of the Java™ Programming Language|publisher=Oracle|date=January 1, 1999|access-date=2013-01-14|archive-url=https://web.archive.org/web/20130123204103/http://www.oracle.com/technetwork/java/intro-141325.html|archive-date=January 23, 2013|url-status=live|df=mdy-all}}</ref>"}},"i":2}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":3}}]}'/>
- Java
- A general-purpose programming language that is class-based, object-oriented(although not a pure OO language), and designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere" (WORA), meaning that compiled Java code can run on all platforms that support Java without the need for recompilation.
Also sequential search.
- A method for finding an element within a list. It sequentially checks each element of the list until a match is found or the whole list has been searched.
- linked list
- A linear collection of data elements, whose order is not given by their physical placement in memory. Instead, each element points to the next. It is a data structure consisting of a collection of nodes which together represent a sequence.
- linker
- or link editor, is a computer utility program that takes one or more object files generated by a compiler 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.
- list
- An abstract data type that represents a countable number of ordered values, 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 stream. Lists are a basic example of containers, as they contain other values. If the same value occurs multiple times, each occurrence is considered a distinct item.
- loader
- The part of an operating system that is responsible for loading programs and libraries. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them for execution. Loading a program involves reading the contents of the executable file containing the program instructions into memory, and then carrying out other required preparatory tasks to prepare the executable for running. Once loading is complete, the operating system starts the program by passing control to the loaded program code.
- logic error
- In computer programming, 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.
- logic programming
- A type of programming paradigm which is largely based on formal logic. Any program written in a logic programming language 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.
Bishop, C. M. (2006), Pattern Recognition and Machine Learning, Springer, {{ISBN|978-0-387-31073-2}}</ref>"}},"i":3}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[machine vision]] (MV)"}},"i":4}},{"template":{"target":{"wt":"anchor","href":"./Template:Anchor"},"params":{"1":{"wt":"machine vision"}},"i":5}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"The technology and methods used to provide imaging-based automatic inspection and analysis for such applications as automatic inspection, [[process control]], and robot guidance, usually in industry. Machine vision refers to many technologies, software and hardware products, integrated systems, actions, methods and expertise. Machine vision as a [[systems engineering]] discipline can be considered distinct from [[computer vision]], a form of {{gli|computer science}}. 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."}},"i":6}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[mathematical logic]]"}},"i":7}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A subfield of [[mathematics]] exploring the applications of formal [[logic]] to mathematics. It bears close connections to [[metamathematics]], the [[foundations of mathematics]], and [[theoretical computer science]].<ref>Undergraduate texts include Boolos, Burgess, and Jeffrey [[#CITEREFBoolosBurgessJeffrey2002|(2002)]], [[Enderton]] [[#CITEREFEnderton2001|(2001)]], and Mendelson [[#CITEREFMendelson1997|(1997)]]. A classic graduate text by Shoenfield [[#CITEREFShoenfield2001|(2001)]] first appeared in 1967.</ref> The unifying themes in mathematical logic include the study of the expressive power of [[formal system]]s and the [[deductive]] power of formal [[Mathematical proof|proof]] systems."}},"i":8}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[matrix (mathematics)|matrix]]"}},"i":9}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In [[mathematics]], a matrix, (plural matrices), is a [[rectangular]] ''[[wikt:array|array]]''<ref>Equivalently, ''[[wikt:table|table]]''.</ref> (see [[irregular matrix]]) of [[number]]s, [[symbol (formal)|symbol]]s, or [[expression (mathematics)|expression]]s, arranged in ''[[wikt:row|row]]s'' and ''[[wikt:column|column]]s''.<ref>{{harvtxt|Anton|1987|p=23}}</ref><ref>{{harvtxt|Beauregard|Fraleigh|1973|p=56}}</ref>"}},"i":10}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[computer data storage|memory]]"}},"i":11}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"Computer data storage, often called storage, is a technology consisting of [[computer]] components and [[Data storage device|recording media]] that are used to retain digital [[data (computing)|data]]. It is a core function and fundamental component of computers.<ref name=\"Patterson\">{{Cite book |title=Computer Organization and Design: The Hardware/Software Interface |last1=Patterson |first1=David A. |last2=Hennessy |first2=John L. |date=2005 |publisher=[[Morgan Kaufmann Publishers]] |isbn=1-55860-604-1 |edition=3rd |location=[[Amsterdam]] |oclc=56213091 |url-access=registration |url=https://archive.org/details/isbn_9781558606043 }}</ref>{{rp|15–16}}"}},"i":12}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[merge sort]]"}},"i":13}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also '''mergesort'''."}},"i":14}},"\n\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"An efficient, general-purpose, [[comparison sort|comparison-based]] [[sorting algorithm]]. Most implementations produce a [[stable sort]], which means that the order of equal elements is the same in the input and output. Merge sort is a [[divide and conquer algorithm]] that was invented by [[John von Neumann]] in 1945.<ref>{{Harvtxt|Knuth|1998|p=158}}</ref> A detailed description and analysis of bottom-up mergesort appeared in a report by [[Herman Goldstine|Goldstine]] and [[John von Neumann|von Neumann]] as early as 1948.<ref>{{cite conference |title=A meticulous analysis of mergesort programs |date=March 1997 |first1=Jyrki |last1=Katajainen |first2=Jesper Larsson |last2=Träff |conference=Italian Conference on Algorithms and Complexity |location=Rome |book-title=Proceedings of the 3rd Italian Conference on Algorithms and Complexity |pages=217–228 |doi=10.1007/3-540-62592-5_74 |url=http://hjemmesider.diku.dk/~jyrki/Paper/CIAC97.pdf }}</ref>"}},"i":15}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[method (computer programming)|method]]"}},"i":16}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In {{gli|object-oriented programming}} (OOP), a {{gli|procedure}} associated with a [[Message passing|message]] and an {{gli|object}}. 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."}},"i":17}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[software development process|methodology]]"}},"i":18}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"In [[software engineering]], a software development process is the process of dividing [[software development]] work into distinct phases to improve [[Software design|design]], [[Software product management|product management]], and [[Software project management|project management]]. It is also known as a software development life cycle (SDLC). The methodology may include the pre-definition of specific [[deliverable]]s and artifacts that are created and completed by a project team to develop or maintain an application.<ref name=\"Medicare 2008\">Centers for Medicare & Medicaid Services (CMS) Office of Information Service (2008). Selecting a development approach. Webarticle. United States Department of Health and Human Services (HHS). Re-validated: March 27, 2008. Retrieved 27 Oct 2008.</ref>"}},"i":19}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[modem]]"}},"i":20}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Portmanteau of '''modulator-demodulator'''."}},"i":21}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A [[Computer hardware|hardware]] device that converts data into a format suitable for a [[transmission medium]] so that it can be transmitted from one computer to another (historically along telephone wires). A modem [[Modulation#Digital modulation methods|modulates]] one or more [[carrier wave]] signals to encode [[digital information]] for transmission and [[Demodulation|demodulates]] signals to decode the transmitted information. The goal is to produce a [[signal]] that can be transmitted easily and decoded reliably to reproduce the original digital data. Modems can be used with almost any means of transmitting analog signals from [[light-emitting diode]]s to [[radio]]. A common type of modem is one that turns the [[digital data]] of a [[computer]] into modulated [[electrical signal]] for transmission over [[telephone line]]s and demodulated by another modem at the receiver side to recover the digital data."}},"i":22}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":23}}]}'/>
- machine learning (ML)
- The scientific study of algorithms 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.
- machine vision (MV)
- The technology and methods used to provide imaging-based automatic inspection and analysis for such applications as automatic inspection, process control, and robot guidance, usually in industry. Machine vision refers to many technologies, software and hardware products, integrated systems, actions, methods and expertise. Machine vision as a systems engineering discipline can be considered distinct from computer vision, a form of computer science. 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.
- mathematical logic
- A subfield of mathematics exploring the applications of formal logic to mathematics. It bears close connections to metamathematics, the foundations of mathematics, and theoretical computer science. The unifying themes in mathematical logic include the study of the expressive power of formal systems and the deductive power of formal proof systems.
- matrix
- In mathematics, a matrix, (plural matrices), is a rectangular array (see irregular matrix) of numbers, symbols, or expressions, arranged in rows and columns.
- memory
- Computer data storage, often called storage, is a technology consisting of computer components and recording media that are used to retain digital data. It is a core function and fundamental component of computers.
- merge sort
- natural language processing (NLP)
- A subfield of linguistics, computer science, 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.
- node
- Is a basic unit of a data structure, such as a linked list or tree data structure. Nodes contain data and also may link to other nodes. Links between nodes are often implemented by pointers.
- number theory
- A branch of pure mathematics devoted primarily to the study of the integers and integer-valued functions.
- numerical analysis
- The study of algorithms that use numerical approximation (as opposed to symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics).
- numerical method
- In numerical analysis, a numerical method is a mathematical tool designed to solve numerical problems. The implementation of a numerical method with an appropriate convergence check in a programming language is called a numerical algorithm.
{{cite book |first=Andy |last=Oppel |title=SQL Demystified |publisher=McGraw Hill |year=2005| page=7 |isbn=0-07-226224-9}}</ref>"}},"i":2}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[object code]]"}},"i":3}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also '''object module'''."}},"i":4}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"The product of a {{gli|compiler}}.<ref>{{cite web|url=https://www.techtarget.com/whatis/definition/compiler|title=What is a compiler?|publisher=TechTarget|quote=Compilers that translate source code to machine code usually target specific OSes and computer architectures. This type of output is sometimes referred to as object code, which is not related to object-oriented programming.|access-date=14 June 2025}}</ref> In a general sense object code is a sequence of [[statement (computer science)|statements]] or instructions in a computer language,<ref>{{cite book|last1=Aho|first1=Alfred V.|author-link1=Alfred Aho|last2=Sethi|first2=Ravi|author-link2=Ravi Sethi|last3=Ullman|first3=Jeffrey D.|author-link3=Jeffrey Ullman|title=Compilers: principles, techniques, and tools|series=Computer Science|year=1986|publisher=Mark S. Dalton|isbn=0-201-10194-7|page=704|chapter=10 Code Optimization}}</ref> usually a [[machine code]] language (i.e., [[binary file|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.\""}},"i":5}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[object-oriented analysis and design]] (OOAD)"}},"i":6}},{"template":{"target":{"wt":"anchor","href":"./Template:Anchor"},"params":{"1":{"wt":"object-oriented analysis and design"}},"i":7}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A technical approach for analyzing and designing an application, system, or business by applying {{gli|object-oriented programming}}, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality."}},"i":8}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[object-oriented programming]] (OOP)"}},"i":9}},{"template":{"target":{"wt":"anchor","href":"./Template:Anchor"},"params":{"1":{"wt":"object-oriented programming"}},"i":10}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A {{gli|programming paradigm}} based on the concept of \"[[Object (computer science)|objects]]\", which can contain [[data]], in the form of {{gli|field|fields}} (often known as ''attributes'' or ''properties''), and code, in the form of {{gli|procedure|procedures}} (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 (computer programming)|this]]\" or \"self\"). In OOP, computer programs are designed by making them out of objects that interact with one another.<ref>{{Cite journal\n | last1 = Kindler | first1 = E.\n | last2 = Krivy | first2 = I.\n | title = Object-Oriented Simulation of systems with sophisticated control\n | journal = International Journal of General Systems\n | year = 2011 | volume = 40\n | issue = 3\n | pages = 313–343| doi = 10.1080/03081079.2010.539975\n | s2cid = 205549734\n }}</ref><ref>{{Cite book|last1=Lewis|first1=John|last2=Loftus|first2= William|title=Java Software Solutions Foundations of Programming Design 6th ed|publisher=Pearson Education Inc.|year=2008|isbn=978-0-321-53205-3}}, section 1.6 \"Object-Oriented Programming\"</ref> OOP languages are diverse, but the most popular ones are [[class-based]], meaning that objects are [[instance (computer science)|instances]] of {{gli|class|classes}}, which also determine their [[data type|types]]."}},"i":11}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[open-source software]] (OSS)"}},"i":12}},{"template":{"target":{"wt":"anchor","href":"./Template:Anchor"},"params":{"1":{"wt":"open-source software"}},"i":13}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A type of {{gli|computer software}} in which {{gli|source code}} is released under a [[Open-source license|license]] in which the [[copyright]] holder grants users the rights to study, change, and [[Software distribution|distribute the software]] to anyone and for any purpose.<ref>{{cite book|author=St. Laurent, Andrew M.|title=Understanding Open Source and Free Software Licensing|publisher=O'Reilly Media|year=2008|isbn=9780596553951|page=4|url=https://books.google.com/books?id=04jG7TTLujoC&pg=PA4}}</ref> Open-source software may be developed in a [[Open-source model|collaborative public manner]]. Open-source software is a prominent example of [[open collaboration]].<ref name=\"Open Collaboration\">{{Cite journal|last1=Levine|first1=Sheen S.|last2=Prietula|first2=Michael J.|date=2013-12-30|title=Open Collaboration for Innovation: Principles and Performance|journal=Organization Science|volume=25|issue=5|pages=1414–1433|doi=10.1287/orsc.2013.0872|issn=1047-7039|arxiv=1406.7541|s2cid=6583883}}</ref>"}},"i":14}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[operating system]] (OS)"}},"i":15}},{"template":{"target":{"wt":"anchor","href":"./Template:Anchor"},"params":{"1":{"wt":"operating system"}},"i":16}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"[[System software]] that manages [[computer hardware]], {{gli|software}} resources, and provides common {{gli|daemon|services}} for {{gli|computer program|computer programs}}."}},"i":17}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[optical fiber]]"}},"i":18}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A flexible, [[transparency and translucency|transparent]] [[fiber]] made by [[Drawing (manufacturing)|drawing]] [[glass]] ([[silica]]) or plastic to a diameter slightly thicker than that of a [[Hair's breadth|human hair]].<ref>{{cite web|title=Optical Fiber|url=http://www.thefoa.org/tech/ref/basic/fiber.html|website=www.thefoa.org |publisher=[[The Fiber Optic Association]] |access-date=17 April 2015}}</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 communication]]s, where they permit transmission over longer distances and at higher [[Bandwidth (computing)|bandwidths]] (data rates) than electrical cables. Fibers are used instead of [[metal]] wires because signals travel along them with less [[Attenuation|loss]]; in addition, fibers are immune to [[electromagnetic interference]], a problem from which metal wires suffer.<ref>{{cite book|ref=Senior|last1=Senior|first1=John M.|last2=Jamro|first2=M. Yousif|title=Optical fiber communications: principles and practice|date=2009|publisher=Pearson Education|isbn=978-0130326812|pages=7–9}}</ref>"}},"i":19}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":20}}]}'/>
- object
- An object can be a variable, a data structure, a function, or a method, and as such, is a value in memory referenced by an identifier. In the class-based object-oriented programming paradigm, object refers to a particular instance of a class, where the object can be a combination of variables, functions, and data structures. In relational database management, an object can be a table or column, or an association between data and a database entity (such as relating a person's age to a specific person).
- object code
Also formal argument.
- In computer programming, a special kind of variable, used in a subroutine to refer to one of the pieces of data provided as input to the subroutine. These pieces of data are the values 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.
- peripheral
- Any auxiliary or ancillary device connected to or integrated within a computer system and used to send information to or retrieve information from the computer. An input device sends data or instructions to the computer; an output device provides output from the computer to the user; and an input/output device performs both functions.
- pointer
- Is an object in many programming languages that stores a memory address. This can be that of another value located in computer memory, or in some cases, that of memory-mapped computer hardware. A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer. As an analogy, a page number in a book's index could be considered a pointer to the corresponding page; dereferencing such a pointer would be done by flipping to the page with the given page number and reading the text found on that page. The actual format and content of a pointer variable is dependent on the underlying computer architecture.
- postcondition
- In computer programming, 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.
- precondition
- In computer programming, 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.
- primary storage
- (Also known as main memory, internal memory or prime memory), often referred to simply as memory, is the only one directly accessible to the CPU. The CPU continuously reads instructions stored there and executes them as required. Any data actively operated on is also stored there in uniform manner.
- primitive data type
- priority queue
- An abstract data type which is like a regular queue or stack 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.
- procedural programming
- Procedural generation
- procedure
- In computer programming, a subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed. 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.
- program lifecycle phase
- Program lifecycle phases are the stages a computer program 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.
- programming language
- A formal language, which comprises a set of instructions that produce various kinds of output. Programming languages are used in computer programming to implement algorithms.
- programming language implementation
- Is a system for executing computer programs. There are two general approaches to programming language implementation: interpretation and compilation.
- programming language theory
- (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and of their individual features. It falls within the discipline of computer science, both depending on and affecting mathematics, software engineering, linguistics and even cognitive science. It has become a well-recognized branch of computer science, and an active research area, with results published in numerous journals dedicated to PLT, as well as in general computer science and engineering publications.
- Prolog
- Is a logic programming language associated with artificial intelligence and computational linguistics. 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.
- Python
- Is an interpreted, high-level and general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.
{{cite book | title=Quantum Computing : Progress and Prospects (2018) | page= I-5 | publisher=National Academies Press | editor-last1 = Grumbling | editor-first1 = Emily | editor-last2 = Horowitz | editor-first2 = Mark | author= ((The National Academies of Sciences, Engineering, and Medicine)) |location=Washington, D.C. | year=2019 | doi=10.17226/25196|isbn=978-0-309-47969-1 | s2cid= 125635007 | oclc=1081001288 }}</ref>{{rp|I-5}}"}},"i":2}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[queue (abstract data type)|queue]]"}},"i":3}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A {{gli|collection}} 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''."}},"i":4}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[quicksort]]"}},"i":5}},"\n",{"template":{"target":{"wt":"ghat","href":"./Template:Ghat"},"params":{"1":{"wt":"Also '''partition-exchange sort'''."}},"i":6}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"An [[Algorithm efficiency|efficient]] [[sorting algorithm]] which serves as a systematic method for placing the elements of a [[random access]] [[Computer file|file]] or an [[Array data structure|array]] in order."}},"i":7}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":8}}]}'/>
- quantum computing
- The use of quantum-mechanical phenomena such as superposition and entanglement to perform computation. A quantum computer is used to perform such computation, which can be implemented theoretically or physically.
- queue
- A collection 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.
- quicksort
Also base.
- In digital numeral systems, the number of unique digits, including the digit zero, used to represent numbers in a positional numeral system. For example, in the decimal/denary system (the most common system in use today) the radix (base number) is ten, because it uses the ten digits from 0 through 9, and all other numbers are uniquely specified by positional combinations of these ten base digits; in the binary system that is the standard in computing, the radix is two, because it uses only two digits, 0 and 1, to uniquely specify each number.
- record
- A record (also called a structure, struct, or compound data) is a basic data structure. Records in a database or spreadsheet are usually called "rows".
- recursion
- Occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematics and computer science, 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.
- reference
- Is a value that enables a program to indirectly access a particular datum, such as a variable's value or a record, in the computer's memory or in some other storage device. The reference is said to refer to the datum, and accessing the datum is called dereferencing the reference.
- reference counting
- A programming technique of storing the number of references, pointers, or handles 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.
- regression testing
- (rarely non-regression testing) is re-running functional and non-functional tests to ensure that previously developed and tested software still performs after a change. 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. 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).
- relational database
- Is a digital database based on the relational model of data, as proposed by E. F. Codd in 1970.
A software system used to maintain relational databases is a relational database management system (RDBMS). Many relational database systems have an option of using the SQL (Structured Query Language) for querying and maintaining the database.
- reliability engineering
- A sub-discipline of systems engineering that emphasizes dependability in the lifecycle management of a product. Reliability describes the ability of a system or component to function under stated conditions for a specified period of time. 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.
- requirements analysis
- In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the various stakeholders, analyzing, documenting, validating and managing software or system requirements.
- robotics
- An interdisciplinary branch of engineering and science that includes mechanical engineering, electronic engineering, information engineering, computer science, 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.
- round-off error
push, which adds an element to the collection, and
- upload
- In computer networks, to send data to a remote system such as a server or another client so that the remote system can store a copy. Contrast download.
- Uniform Resource Locator (URL)
<ref>{{cite book |last=Knuth |first=Donald |date=1997 |title=The Art of Computer Programming |volume=1 |edition=3rd |location=Reading, Massachusetts |publisher=Addison-Wesley |pages=3–4 |isbn=0-201-89683-4 }}</ref>"}},"i":2}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[virtual machine]] (VM)"}},"i":3}},{"template":{"target":{"wt":"anchor","href":"./Template:Anchor"},"params":{"1":{"wt":"virtual machine"}},"i":4}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"An {{gli|emulator|emulation}} of a computer system. Virtual machines are based on {{gli|computer architecture|computer architectures}} and attempt to provide the same functionality as a physical computer. Their implementations may involve specialized hardware, software, or a combination of both."}},"i":5}},"\n\n",{"template":{"target":{"wt":"term","href":"./Template:Term"},"params":{"1":{"wt":"[[V-Model (software development)|V-Model]]"}},"i":6}},"\n",{"template":{"target":{"wt":"defn","href":"./Template:Defn"},"params":{"1":{"wt":"A [[software development process]] that may be considered an extension of the {{gli|waterfall model}}, and is an example of the more [[V-model|general V-model]]. Instead of moving down in a linear way, the process steps are bent upwards after the {{gli|source code|coding}} 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 [[Software testing|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>"}},"i":7}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":8}}]}'/>
- variable
- In computer programming, a variable, or scalar, is a storage location (identified by a memory address) paired with an associated symbolic name (an identifier), which contains some known or unknown quantity of information referred to as a value. The variable name is the usual way to reference 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 source code can be bound to a value during run time, and the value of the variable may therefore change during the course of program execution.
- virtual machine (VM)
- An emulation of a computer system. Virtual machines are based on computer architectures and attempt to provide the same functionality as a physical computer. Their implementations may involve specialized hardware, software, or a combination of both.
- V-Model
- A software development process that may be considered an extension of the waterfall model, 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 coding 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.
{{cite web|url=http://www.webopedia.com/TERM/W/Wi_Fi.html|title=What is Wi-Fi (IEEE 802.11x)? A Webopedia Definition|last=Beal|first=Vangie|website=Webopedia|date=2 May 2001|archive-url=https://web.archive.org/web/20120308123721/http://www.webopedia.com/term/w/wi_fi.html|archive-date=2012-03-08|url-status=live}}</ref><ref>{{Cite news|url=https://www.theguardian.com/technology/blog/2007/may/21/thedangersof|title=The dangers of Wi-Fi radiation (updated)|first=Jack|last=Schofield|newspaper=The Guardian |date=21 May 2007|via=www.theguardian.com}}</ref><ref>{{Cite web|url=https://www.wi-fi.org/certification|title=Certification | Wi-Fi Alliance|website=www.wi-fi.org|url-status=deviated|archive-url=https://web.archive.org/web/20180903183902/https://www.wi-fi.org/certification|archive-date=3 September 2018}}</ref>"}},"i":10}},"\n",{"template":{"target":{"wt":"glossaryend","href":"./Template:Glossaryend"},"params":{},"i":11}}]}'/>
- waterfall model
- A breakdown of project activities into linear sequential phases, where each phase depends on the deliverables of the previous one and corresponds to a specialisation of tasks. The approach is typical for certain areas of engineering design. In software development, it tends to be among the less iterative and flexible approaches, as progress flows in largely one direction ("downwards" like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, deployment and maintenance.
- Waveform Audio File Format
- XHTML
- ↑ "Abstract Methods and Classes". oracle.com. Oracle Java Documentation. Retrieved 11 December 2014.
- ↑ Klug, Anthony (July 1982). "Equivalence of Relational Algebra and Relational Calculus Query Languages Having Aggregate Functions". Journal of the Association for Computing Machinery. 29 (3): 699–717. doi:10.1145/322326.322332.
- ↑ Goodrich, Michael T.; Tamassia, Roberto (2002), Algorithm Design: Foundations, Analysis, and Internet Examples, John Wiley & Sons, Inc., ISBN 978-0-471-38365-9
- ↑ Bjoern Andres; Ullrich Koethe; Thorben Kroeger; Hamprecht (2010). "Runtime-Flexible Multi-dimensional Arrays and Views for C++98 and C++0x". arXiv:1008.2909 [cs.DS].
- ↑