# Glossary of computer science

Most of the terms listed in Wikipedia glossaries are already defined and explained within Wikipedia itself. However, glossaries like this one are useful for looking up, comparing and reviewing large numbers of terms together. You can help enhance this page by adding new terms or writing definitions for existing ones.

This glossary of computer science terms is a list of definitions about computer science, its sub-disciplines, and related fields.

## G

• Game theory – is the study of mathematical models of strategic interaction between rational decision-makers.[96] 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), describes the concept that flawed, or nonsense input data produces nonsense output or "garbage".
• GIF – Graphics Interchange Format.
• Gigabyte – is a multiple of the unit byte for digital information. The prefix giga means 109 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 global variable is 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, graph theory is 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.

## H

• 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 – is 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 – is a specialized tree-based data structure which is essentially an almost complete[97] 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.[98] The node at the "top" of the heap (with no parents) is called the root node.
• Heapsort – is 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.[99]
• 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.

## K

• Kernel – When referring to an operating system, the kernel is the first section of the operating system to load into memory. As the center of the operating system, the kernel needs to be small, efficient and loaded into a protected area in the memory so as not to be overwritten. It can be responsible for such things as disk drive management, file management, memory management, process management, etc.

## L

• Library (computing) – is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications.
• Linear search – or sequential search, is 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.[116]
• Linked list – is 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.[117]
• List – or sequence, is 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.[118]:§3.5 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 – is 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 logic error is 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 – is 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.

## V

• 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 thus change during the course of program execution.[140][141]
• Virtual machine – (VM), is an emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination.
• V-Model – In software development, the V-model[142] represents a 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.

## References

1. "Abstract Methods and Classes". oracle.com. Oracle Java Documentation. Retrieved 11 December 2014.
2. Colburn, Timothy; Shute, Gary (2007-06-05). "Abstraction in Computer Science". Minds and Machines. 17 (2): 169–184. doi:10.1007/s11023-007-9061-7. ISSN 0924-6495.
3. Kramer, Jeff (2007-04-01). "Is abstraction the key to computing?". Communications of the ACM. 50 (4): 36–42. CiteSeerX 10.1.1.120.6776. doi:10.1145/1232743.1232745. ISSN 0001-0782.
4. Comparison of Agent Architectures Archived August 27, 2008, at the Wayback Machine
5. Collier, Ken W. (2011). Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing. Pearson Education. pp. 121 ff. ISBN 9780321669544. What is a self-organizing team?
6. "What is Agile Software Development?". Agile Alliance. 8 June 2013. Retrieved 4 April 2015.
7. Goodrich, Michael T.; Tamassia, Roberto (2002), Algorithm Design: Foundations, Analysis, and Internet Examples, John Wiley & Sons, Inc., ISBN 978-0-471-38365-9
8. "Application software". PC Magazine. Ziff Davis.
9. Black, Paul E. (13 November 2008). "array". Dictionary of Algorithms and Data Structures. National Institute of Standards and Technology. Retrieved 22 August 2010.
10. 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].
11. Garcia, Ronald; Lumsdaine, Andrew (2005). "MultiArray: a C++ library for generic programming with arrays". Software: Practice and Experience. 35 (2): 159–188. doi:10.1002/spe.630. ISSN 0038-0644.
12. Definition of AI as the study of intelligent agents:
13. Russell & Norvig 2009, p. 2.
14. Douglas Comer, Computer Networks and Internets, page 99 ff, Prentice Hall 2008.
15. Fred Halsall, to data+communications and computer networks, page 108, Addison-Wesley, 1985.
16. Cisco Networking Academy Program: CCNA 1 and 2 companion guide, Volym 1–2, Cisco Academy 2003
17. Behrouz A. Forouzan, Data communications and networking, McGraw-Hill, 2007
18. Fleming, Philip J.; Wallace, John J. (1986-03-01). "How not to lie with statistics: the correct way to summarize benchmark results". Communications of the ACM. 29 (3): 218–221. doi:10.1145/5666.5673. ISSN 0001-0782.
19. Breur, Tom (July 2016). "Statistical Power Analysis and the contemporary "crisis" in social sciences". Journal of Marketing Analytics. 4 (2–3): 61–65. doi:10.1057/s41270-016-0001-3. ISSN 2050-3318.
20. Bachmann, Paul (1894). Analytische Zahlentheorie [Analytic Number Theory] (in German). 2. Leipzig: Teubner.
21. Landau, Edmund (1909). Handbuch der Lehre von der Verteilung der Primzahlen [Handbook on the theory of the distribution of the primes] (in German). Leipzig: B. G. Teubner. p. 883.
22. Williams, Jr., Louis F. (22 April 1976). A modification to the half-interval search (binary search) method. Proceedings of the 14th ACM Southeast Conference. ACM. pp. 95–101. doi:10.1145/503561.503582. Archived from the original on 12 March 2017. Retrieved 29 June 2018.
23. Knuth 1998, §6.2.1 ("Searching an ordered table"), subsection "Binary search".
24. Butterfield & Ngondi 2016, p. 46.
25. Cormen et al. 2009, p. 39.
26. Weisstein, Eric W. "Binary search". MathWorld.
27. Rowan Garnier; John Taylor (2009). Discrete Mathematics: Proofs, Structures and Applications, Third Edition. CRC Press. p. 620. ISBN 978-1-4398-1280-8.
28. Steven S Skiena (2009). The Algorithm Design Manual. Springer Science & Business Media. p. 77. ISBN 978-1-84800-070-4.
29. Mackenzie, Charles E. (1980). Coded Character Sets, History and Development. The Systems Programming Series (1 ed.). Addison-Wesley Publishing Company, Inc. p. x. ISBN 978-0-201-14460-4. LCCN 77-90165. Archived from the original on 18 November 2016. Retrieved 22 May 2016.
30. Gupta, Prakash C (2006). Data Communications and Computer Networks. PHI Learning. ISBN 9788120328464. Retrieved 10 July 2011.
31. James D. Murray; William vanRyper (April 1996). Encyclopedia of Graphics File Formats (Second ed.). O'Reilly. bmp. ISBN 978-1-56592-161-0. Retrieved 2014-03-07.
32. James D. Murray; William vanRyper (April 1996). Encyclopedia of Graphics File Formats (Second ed.). O'Reilly. os2bmp. ISBN 978-1-56592-161-0. Retrieved 2014-03-07.
33. Gries, David; Schneider, Fred B. (1993), "Chapter 2. Boolean Expressions", A Logical Approach to Discrete Math, Monographs in Computer Science, Springer, p. 25ff, ISBN 9780387941158
34. Blaauw, Gerrit Anne; Brooks, Jr., Frederick Phillips; Buchholz, Werner (1962), "4: Natural Data Units" (PDF), in Buchholz, Werner (ed.), Planning a Computer System – Project Stretch, McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA., pp. 39–40, LCCN 61-10466, archived (PDF) from the original on 2017-04-03, retrieved 2017-04-03, […] Terms used here to describe the structure imposed by the machine design, in addition to bit, are listed below.
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 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.)
A 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 was coined for this purpose by the designers of the Bull GAMMA 60 computer.)
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. […]
35. Bemer, Robert William (1959), "A proposal for a generalized card code of 256 characters", Communications of the ACM, 2 (9): 19–23, doi:10.1145/368424.368435
36. "What is a callback function?". Stack Overflow. Retrieved 2018-05-16.
37. Weik, Martin H. (1961). "A Third Survey of Domestic Electronic Digital Computing Systems". Ballistic Research Laboratory. Cite journal requires `|journal=` (help)
38. Kuck, David (1978). Computers and Computations, Vol 1. John Wiley & Sons, Inc. p. 12. ISBN 978-0471027164.
39. "Definition of CHARACTER". www.merriam-webster.com. Retrieved 1 April 2018.
40. Gamma et al. 1995, p. 14.
41. Bruce 2002, 2.1 Objects, classes, and object types, https://books.google.com/books?id=9NGWq3K1RwUC&pg=PA18.
42. Sadoski, Darleen. Client/Server Software Architectures – An Overview, Software Technology Roadmap, 1997-08-02. Retrieved on 2008-09-16.
43. Mills, H.; M. Dyer; R. Linger (September 1987). "Cleanroom Software Engineering". IEEE Software. 4 (5): 19–25. CiteSeerX 10.1.1.467.2435. doi:10.1109/MS.1987.231413.
44. Sussman and Steele. "Scheme: An interpreter for extended lambda calculus". "... a data structure containing a lambda expression, and an environment to be used when that lambda expression is applied to arguments." (Wikisource)
45. Shaun Bebbington (2014). "What is coding". Retrieved 2014-03-03.
46. Shaun Bebbington (2014). "What is programming". Retrieved 2014-03-03.
47. Cognitive science is an interdisciplinary field of researchers from Linguistics, psychology, neuroscience, philosophy, computer science, and anthropology that seek to understand the mind. How We Learn: Ask the Cognitive Scientist
48. Thagard, Paul, Cognitive Science, The Stanford Encyclopedia of Philosophy (Fall 2008 Edition), Edward N. Zalta (ed.).
49. PC Mag Staff (28 February 2017). "Encyclopedia: Definition of Compiler". PCMag.com. Retrieved 28 February 2017.
50. Computation from the Free Merriam-Webster Dictionary
51. "Computation: Definition and Synonyms from Answers.com". Answers.com. Archived from the original on 22 February 2009. Retrieved 26 April 2017.
52. Melnik, Roderick, ed. (2015). Mathematical and Computational Modeling: With Applications in Natural and Social Sciences, Engineering, and the Arts. Wiley. ISBN 978-1-118-85398-6.
53. Trappenberg, Thomas P. (2002). Fundamentals of Computational Neuroscience. United States: Oxford University Press Inc. p. 1. ISBN 978-0-19-851582-1.
54. What is computational neuroscience? Patricia S. Churchland, Christof Koch, Terrence J. Sejnowski. in Computational Neuroscience pp.46-55. Edited by Eric L. Schwartz. 1993. MIT Press "Archived copy". Archived from the original on 2011-06-04. Retrieved 2009-06-11.CS1 maint: archived copy as title (link)
55. Press, The MIT. "Theoretical Neuroscience". The MIT Press. Retrieved 2018-05-24.
56. Gerstner, W.; Kistler, W.; Naud, R.; Paninski, L. (2014). Neuronal Dynamics. Cambridge, UK: Cambridge University Press. ISBN 9781107447615.
57. Clements, Alan. Principles of Computer Hardware (Fourth ed.). p. 1. Architecture describes the internal organization of a computer in an abstract way; that is, it defines the capabilities of the computer and its programming model. You can have two computers that have been constructed in different ways with different technologies but with the same architecture.
58. Hennessy, John; Patterson, David. Computer Architecture: A Quantitative Approach (Fifth ed.). p. 11. This task has many aspects, including instruction set design, functional organization, logic design,and implementation.
59. name="Patterson">Patterson, David A.; Hennessy, John L. (2005). Computer Organization and Design: The Hardware/Software Interface (3rd ed.). Amsterdam: Morgan Kaufmann Publishers. ISBN 978-1-55860-604-3. OCLC 56213091.
60. Bynum, Terrell Ward. "A Very Short History of Computer Ethics". Southern Connecticut Wein University. Archived from the original on 2008-04-18. Retrieved 2011-01-05.
61. "WordNet Search—3.1". Wordnetweb.princeton.edu. Retrieved 14 May 2012.
62. Orsucci, Franco F.; Sala, Nicoletta (2008). Reflexing Interfaces: The Complex Coevolution of Information Technology Ecosystems, Information Science Reference. p. 335.
63. Schatz, Daniel; Bashroush, Rabih; Wall, Julie (2017). "Towards a More Representative Definition of Cyber Security". Journal of Digital Forensics, Security and Law. 12 (2). ISSN 1558-7215.
64. Dana H. Ballard; Christopher M. Brown (1982). Computer Vision. Prentice Hall. ISBN 0-13-165316-4.
65. Huang, T. (1996-11-19). Vandoni, Carlo, E, ed. Computer Vision : Evolution And Promise (PDF). 19th CERN School of Computing. Geneva: CERN. pp. 21–25. doi:10.5170/CERN-1996-008.21. ISBN 978-9290830955.
66. Milan Sonka; Vaclav Hlavac; Roger Boyle (2008). Image Processing, Analysis, and Machine Vision. Thomson. ISBN 0-495-08252-X.
67. Lamport, Leslie (July 1978). "Time, Clocks, and the Ordering of Events in a Distributed System" (PDF). Communications of the ACM. 21 (7): 558–565. CiteSeerX 10.1.1.142.3682. doi:10.1145/359545.359563. Retrieved 4 February 2016.
68. Sussman, Gerald Jay; Steele, Guy L., Jr. (December 1975). "Scheme: An interpreter for extended lambda calculus" . AI Memo. 349: 19. That is, in this continuation-passing programming style, a function always "returns" its result by "sending" it to another function. This is the key idea.
69. Sussman, Gerald Jay; Steele, Guy L., Jr. (December 1998). "Scheme: A Interpreter for Extended Lambda Calculus" (reprint). Higher-Order and Symbolic Computation. 11 (4): 405–439. doi:10.1023/A:1010035624696. We believe that this was the first occurrence of the term "continuation-passing style" in the literature. It has turned out to be an important concept in source code analysis and transformation for compilers and other metaprogramming tools. It has also inspired a set of other "styles" of program expression.
70. "Frequently Asked Questions". Creative Commons. 4 August 2016. Retrieved 20 December 2011.
71. James Glanz (September 22, 2012). "Power, Pollution and the Internet". The New York Times. Retrieved 2012-09-25.
72. Sparsh, Mittal. "Power Management Techniques for Data Centers: A Survey". Cite journal requires `|journal=` (help)
73. Dhar, V. (2013). "Data science and prediction". Communications of the ACM. 56 (12): 64–73. doi:10.1145/2500499.
74. Jeff Leek (2013-12-12). "The key word in "Data Science" is not Data, it is Science". Simply Statistics.
75. Hayashi, Chikio (1998-01-01). "What is Data Science? Fundamental Concepts and a Heuristic Example". In Hayashi, Chikio; Yajima, Keiji; Bock, Hans-Hermann; Ohsumi, Noboru; Tanaka, Yutaka; Baba, Yasumasa (eds.). Data Science, Classification, and Related Methods. Studies in Classification, Data Analysis, and Knowledge Organization. Springer Japan. pp. 40–51. doi:10.1007/978-4-431-65950-1_3. ISBN 9784431702085.
76. Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009). Introduction to Algorithms, Third Edition (3rd ed.). The MIT Press. ISBN 978-0262033848.
77. Black, Paul E. (15 December 2004). "data structure". In Pieterse, Vreda; Black, Paul E. (eds.). Dictionary of Algorithms and Data Structures [online]. National Institute of Standards and Technology. Retrieved 2018-11-06.
78. "Data structure". Encyclopaedia Britannica. 17 April 2017. Retrieved 2018-11-06.
79. Wegner, Peter; Reilly, Edwin D. (2003-08-29). Encyclopedia of Computer Science. Chichester, UK: John Wiley and Sons. pp. 507–512. ISBN 978-0470864128.
80. type at the Free On-line Dictionary of Computing
81. Shaffer, C. A. (2011). Data Structures & Algorithm Analysis in C++ (3rd ed.). Mineola, NY: Dover. 1.2. ISBN 978-0-486-48582-9.
82. "A declaration specifies the interpretation and attributes of a set of identifiers. A definition of an identifier is a declaration for that identifier that:
• for an object [variable or constant], causes storage to be reserved for that object;
• for a function, includes the function body;
• for an enumeration constant, is the (only) declaration of the identifier;
• for a typedef name, is the first (or only) declaration of the identifier."
C11 specification, 6.7: Declarations, paragraph 5.
83. Mike Banahan. "2.5. Declaration of variables". http://publications.gbdirect.co.uk/c_book/: GBdirect. Retrieved 2011-06-08. [A] declaration [...] introduces just the name and type of something but allocates no storage[...].
84. Stewart Robinson (2004). Simulation – The practice of model development and use. Wiley.
85. Coulouris, George; Jean Dollimore; Tim Kindberg; Gordon Blair (2011). Distributed Systems: Concepts and Design (5th Edition). Boston: Addison-Wesley. ISBN 978-0-132-14301-1.
87. Vivek Gupta; Ethan Jackson; Shaz Qadeer; Sriram Rajamani. "P: Safe Asynchronous Event-Driven Programming". Retrieved 20 February 2017.
88. "executable". Merriam-Webster's Online Dictionary. Merriam-Webster. Retrieved 2008-07-19.
89. Justis, R. T. & Kreigsmann, B. (1979). The feasibility study as a tool for venture analysis. Business Journal of Small Business Management 17 (1) 35-42.
90. Georgakellos, D. A. & Marcis, A. M. (2009). Application of the semantic learning approach in the feasibility studies preparation training process. Information Systems Management 26 (3) 231-240.
91. Young, G. I. M. (1970). Feasibility studies. Appraisal Journal 38 (3) 376-383.
92. R. W. Butler (2001-08-06). "What is Formal Methods?". Retrieved 2006-11-16.
93. C. Michael Holloway. "Why Engineers Should Consider Formal Methods" (PDF). 16th Digital Avionics Systems Conference (27–30 October 1997). Archived from the original (PDF) on 16 November 2006. Retrieved 2006-11-16. Cite journal requires `|journal=` (help)
94. Sanghavi, Alok (May 21, 2010). "What is formal verification?". EE Times Asia.
95. "Declaration vs. expression style - HaskellWiki".
96. Myerson, Roger B. (1991). Game Theory: Analysis of Conflict, Harvard University Press, p. 1. Chapter-preview links, pp. vii–xi.
97. CORMEN, THOMAS H. (2009). INTRODUCTION TO ALGORITHMS. United States of America: The MIT Press Cambridge, Massachusetts London, England. pp. 151–152. ISBN 978-0-262-03384-8.
98. 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.
99. Skiena, Steven (2008). "Searching and Sorting". The Algorithm Design Manual. Springer. p. 109. doi:10.1007/978-1-84800-070-4_4. ISBN 978-1-84800-069-8. [H]eapsort is nothing but an implementation of selection sort using the right data structure.
100. ISO/IEC/IEEE International Standard - Systems and software engineering. ISO/IEC/IEEE 24765:2010(E). 2010. pp. vol., no., pp.1–418, 15 Dec. 2010.
101. Martyn A Ould & Charles Unwin (ed), Testing in Software Development, BCS (1986), p71. Accessed 31 Oct 2014
102. "Understanding Industrial Property". World Intellectual Property Organization. Retrieved 2018-12-06.
103. "Intellectual, industrial and commercial property | Fact Sheets on the European Union". European Parliament. Retrieved 2018-12-06.
104. "What are intellectual property rights?". World Trade Organization. World Trade Organization. Retrieved 2016-05-23.
105. "Intellectual property", Black's Law Dictionary, 10th ed. (2014).
106. "Understanding Copyright and Related Rights" (PDF). World Intellectual Property Organization. p. 4. Retrieved 2018-12-06.
107. "What is Intellectual Property?" (PDF). World Intellectual Property Organization (WIPO). Retrieved 2018-12-07.
108. "Understanding Industrial Property" (PDF). World Intellectual Property Organization (WIPO). Retrieved 2018-12-07.
109. Hookway, B. (2014). "Chapter 1: The Subject of the Interface". Interface. MIT Press. pp. 1–58. ISBN 9780262525503.
110. IEEE 100 - The Authoritative Dictionary Of IEEE Standards Terms. NYC, NY, USA: IEEE Press. 2000. pp. 574–575. ISBN 9780738126012.
111. Dunham, Ken; Melnick, Jim (2008). Malicious Bots: An Inside Look into the Cyber-Criminal Underground of the Internet. CRC Press. ISBN 9781420069068.
112. DECODER, p. 1.
113. "Java is pure object oriented or not?". Stack Overflow. Retrieved 2019-05-24.
114. "Write once, run anywhere?". Computer Weekly. May 2, 2002. Retrieved 2009-07-27.
115. "1.2 Design Goals of the Java™ Programming Language". Oracle. January 1, 1999. Archived from the original on January 23, 2013. Retrieved January 14, 2013.
116. Knuth 1998, §6.1 ("Sequential search").
118. Abelson, Harold; Sussman, Gerald Jay (1996). Structure and Interpretation of Computer Programs. MIT Press.
119. The definition "without being explicitly programmed" is often attributed to Arthur Samuel, who coined the term "machine learning" in 1959, but the phrase is not found verbatim in this publication, and may be a paraphrase that appeared later. Confer "Paraphrasing Arthur Samuel (1959), the question is: How can computers learn to solve problems without being explicitly programmed?" in Koza, John R.; Bennett, Forrest H.; Andre, David; Keane, Martin A. (1996). Automated Design of Both the Topology and Sizing of Analog Electrical Circuits Using Genetic Programming. Artificial Intelligence in Design '96. Springer, Dordrecht. pp. 151–170. doi:10.1007/978-94-009-0279-4_9.
120. < Bishop, C. M. (2006), Pattern Recognition and Machine Learning, Springer, ISBN 978-0-387-31073-2
121. Undergraduate texts include Boolos, Burgess, and Jeffrey (2002), Enderton (2001), and Mendelson (1997). A classic graduate text by Shoenfield (2001) first appeared in 1967.
122. Equivalently, table.
123. Anton (1987, p. 23)
124. Beauregard & Fraleigh (1973, p. 56)
125. Patterson, David A.; Hennessy, John L. (2005). Computer Organization and Design: The Hardware/Software Interface (3rd ed.). Amsterdam: Morgan Kaufmann Publishers. ISBN 1-55860-604-1. OCLC 56213091.
126. Knuth (1998, p. 158)
127. Katajainen, Jyrki; Träff, Jesper Larsson (March 1997). "A meticulous analysis of mergesort programs" (PDF). Proceedings of the 3rd Italian Conference on Algorithms and Complexity. Italian Conference on Algorithms and Complexity. Rome. pp. 217–228. CiteSeerX 10.1.1.86.3154. doi:10.1007/3-540-62592-5_74.
128. 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.
129. 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.
130. Oppel, Andy (2005). SQL Demystified. McGraw Hill. p. 7. ISBN 0-07-226224-9.
131. "Compiler". TechTarget. Retrieved 1 September 2011. Traditionally, the output of the compilation has been called object code or sometimes an object module.
132. Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. (1986). "10 Code Optimization". Compilers: principles, techniques, and tools. Computer Science. Mark S. Dalton. p. 704. ISBN 0-201-10194-7.
133. Kindler, E.; Krivy, I. (2011). "Object-Oriented Simulation of systems with sophisticated control". International Journal of General Systems: 313–343. Cite journal requires `|journal=` (help)
134. Lewis, John; Loftus, William (2008). Java Software Solutions Foundations of Programming Design 6th ed. Pearson Education Inc. ISBN 978-0-321-53205-3., section 1.6 "Object-Oriented Programming"
135. St. Laurent, Andrew M. (2008). Understanding Open Source and Free Software Licensing. O'Reilly Media. p. 4. ISBN 9780596553951.
136. Levine, Sheen S.; Prietula, Michael J. (2013-12-30). "Open Collaboration for Innovation: Principles and Performance". Organization Science. 25 (5): 1414–1433. arXiv:1406.7541. doi:10.1287/orsc.2013.0872. ISSN 1047-7039.
137. "Optical Fiber". www.thefoa.org. The Fiber Optic Association. Retrieved 17 April 2015.
138. Senior, John M.; Jamro, M. Yousif (2009). Optical fiber communications: principles and practice. Pearson Education. pp. 7–9. ISBN 978-0130326812.
139. The National Academies of Sciences, Engineering, and Medicine (2019). Grumbling, Emily; Horowitz, Mark (eds.). Quantum Computing : Progress and Prospects (2018). Washington, DC: National Academies Press. p. I-5. doi:10.17226/25196. ISBN 978-0-309-47969-1. OCLC 1081001288.CS1 maint: multiple names: authors list (link)
140. Compilers: Principles, Techniques, and Tools, pp. 26–28
141. Knuth, Donald (1997). The Art of Computer Programming. 1 (3rd ed.). Reading, Massachusetts: Addison-Wesley. p. 3–4. ISBN 0-201-89683-4.
142. 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.

## Notes

1. The function may be stored as a reference to a function, such as a function pointer.