The history of computing is longer than thehistory of computing hardware and includes the history of methods intended for pen and paper (or for chalk and slate) with or without the aid of tables. Computing is intimately tied to the representation of numbers, though mathematical concepts necessary for computing existed beforenumeral systems. The earliest known tool for use in computation is theabacus, and it is thought to have been invented inBabylon circa between 2700 and 2300 BC. Abaci, of a more modern design, are still used as calculation tools today.
In 1957, Frosch and Derick were able to manufacture the first silicon dioxide field effect transistors at Bell Labs, the first transistors in which drain and source were adjacent at the surface.[9] Subsequently, a team demonstrated a workingMOSFET at Bell Labs 1960.[10][11] The MOSFET made it possible to buildhigh-density integrated circuits,[12][13] leading to what is known as thecomputer revolution[14] ormicrocomputer revolution.[15]
A computer is a machine that manipulatesdata according to a set of instructions called acomputer program.[16] The program has an executable form that the computer can use directly to execute the instructions. The same program in its human-readablesource code form, enables a programmer to study and develop a sequence of steps known as analgorithm.[17] Because the instructions can be carried out in different types of computers, a single set of source instructions converts tomachine instructions according to theCPU type.[18]
The executionprocess carries out the instructions in a computer program. Instructions express the computations performed by the computer. They trigger sequences of simple actions on the executing machine. Those actions produce effects according to thesemantics of the instructions.
Computer software, or justsoftware, is a collection of computer programs and related data, which provides instructions to a computer. Software refers to one or more computer programs and data held in the storage of the computer. It is a set ofprograms, procedures, algorithms, as well as itsdocumentation concerned with the operation of a data processing system.[citation needed] Program software performs thefunction of theprogram it implements, either by directly providinginstructions to the computer hardware or by serving as input to another piece of software. Theterm was coined to contrast with the old termhardware (meaning physical devices). In contrast to hardware, software is intangible.[22]
Software is also sometimes used in a more narrow sense, meaning application software only.
System software, or systems software, is computer software designed to operate and control computer hardware, and to provide a platform for running application software. System software includesoperating systems,utility software,device drivers,window systems, andfirmware. Frequently used development tools such ascompilers,linkers, anddebuggers are classified as system software.[23]System software andmiddleware manage and integrate a computer's capabilities, but typically do not directly apply them in the performance of tasks that benefit the user, unlike application software.
Application software, also known as anapplication or anapp, is computer software designed to help the user perform specific tasks. Examples includeenterprise software,accounting software,office suites,graphics software, andmedia players. Many application programs deal principally withdocuments.[24] Apps may bebundled with the computer and its system software, or may be published separately. Some users are satisfied with the bundled apps and need never install additional applications. The system software manages the hardware and serves the application, which in turn serves the user.
Application software applies the power of a particularcomputing platform or system software to a particular purpose. Some apps, such asMicrosoft Office, are developed in multiple versions for several different platforms; others have narrower requirements and are generally referred to by the platform they run on. For example, ageography application forWindows or anAndroid application foreducation orLinux gaming. Applications that run only on one platform and increase the desirability of that platform due to the popularity of the application, known askiller applications.[25]
A computer network, often simply referred to as a network, is a collection of hardware components and computersinterconnected by communication channels that allow the sharing of resources and information.[26] When at least one process in one device is able to send or receive data to or from at least one process residing in a remote device, the two devices are said to be in a network. Networks may be classified according to a wide variety of characteristics such as the medium used to transport the data,communications protocol used, scale,topology, and organizational scope.
Communications protocols define the rules and data formats for exchanging information in a computer network, and provide the basis fornetwork programming. One well-known communications protocol isEthernet, a hardware andlink layer standard that is ubiquitous inlocal area networks. Another common protocol is theInternet Protocol Suite, which defines a set of protocols for internetworking, i.e. fordata communication between multiple networks, host-to-host data transfer, and application-specific data transmission formats.[27]
Computer networking is sometimes considered a sub-discipline ofelectrical engineering, telecommunications,computer science, information technology, orcomputer engineering, since it relies upon the theoretical and practical application of these disciplines.[28]
The Internet is a global system of interconnectedcomputer networks that use the standardInternet Protocol Suite (TCP/IP) to serve billions of users. This includes millions of private, public, academic, business, and government networks, ranging in scope from local to global. These networks are linked by a broad array of electronic, wireless, and optical networking technologies. The Internet carries an extensive range of information resources and services, such as the inter-linkedhypertext documents of theWorld Wide Web and theinfrastructure to support email.[29]
Computer programming is the process of writing, testing, debugging, and maintaining the source code and documentation of computer programs. This source code is written in aprogramming language, which is anartificial language that is often more restrictive thannatural languages, but easily translated by the computer. Programming is used to invoke some desired behavior (customization) from the machine.[30]
Writing high-quality source code requires knowledge of both the computer science domain and the domain in which the application will be used. The highest-quality software is thus often developed by a team of domain experts, each a specialist in some area of development.[31] However, the termprogrammer may apply to a range of program quality, fromhacker toopen source contributor to professional. It is also possible for a single programmer to do most or all of the computer programming needed to generate theproof of concept to launch a newkiller application.[32]
A programmer, computer programmer, or coder is a person who writes computer software. The termcomputer programmer can refer to a specialist in one area ofcomputer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to programming may also be known as a programmer analyst.[33]A programmer's primary computer language (C,C++,Java,Lisp,Python, etc.) is often prefixed to the above titles, and those who work in a web environment often prefix their titles withWeb. The termprogrammer can be used to refer to asoftware developer, software engineer,computer scientist, orsoftware analyst. However, members of theseprofessions typically possess other software engineering skills, beyond programming.[34]
The computer industry is made up of businesses involved in developing computer software, designing computer hardware andcomputer networking infrastructures, manufacturing computer components, and providing information technology services, includingsystem administration and maintenance.[35]
Computer engineering is adiscipline that integrates several fields ofelectrical engineering andcomputer science required to develop computer hardware and software.[36] Computer engineers usually have training inelectronic engineering (orelectrical engineering),software design, and hardware-software integration, rather than just software engineering or electronic engineering. Computer engineers are involved in many hardware and software aspects of computing, from the design of individualmicroprocessors, personal computers, andsupercomputers, tocircuit design. This field of engineering includes not only the design of hardware within its own domain, but also the interactions between hardware and the context in which it operates.[37]
Software engineering is the application of a systematic, disciplined, and quantifiable approach to the design, development, operation, and maintenance of software, and the study of these approaches. That is, the application of engineering to software.[38][39][40] It is the act of using insights to conceive, model and scale a solution to a problem. The first reference to the term is the 1968NATO Software Engineering Conference, and was intended to provoke thought regarding the perceivedsoftware crisis at the time.[41][42][43]Software development, a widely used and more generic term, does not necessarily subsume the engineering paradigm. The generally accepted concepts of Software Engineering as an engineering discipline have been specified in the Guide to theSoftware Engineering Body of Knowledge (SWEBOK). The SWEBOK has become an internationally accepted standard in ISO/IEC TR 19759:2015.[44]
Computer science or computing science (abbreviated CS or Comp Sci) is thescientific and practical approach tocomputation and its applications. Acomputer scientist specializes in the theory of computation and the design of computational systems.[45]
The field of cybersecurity pertains to the protection of computer systems and networks. This includesinformation and data privacy, preventingdisruption of IT services and prevention of theft of and damage to hardware, software, and data.[47]
Data science is a field that uses scientific and computing tools to extract information and insights from data, driven by the increasing volume and availability of data.[48]Data mining,big data, statistics,machine learning anddeep learning are all interwoven with data science.[49]
Information systems (IS) is the study of complementary networks of hardware and software (see information technology) that people and organizations use to collect, filter, process, create, and distributedata.[50][51][52] TheACM'sComputing Careers describes IS as:
"A majority of IS [degree] programs are located in business schools; however, they may have different names such as management information systems, computer information systems, or business information systems. All IS degrees combine business and computing topics, but the emphasis between technical and organizational issues varies among programs. For example, programs differ substantially in the amount of programming required."[53]
The study of IS bridges business andcomputer science, using the theoretical foundations of information andcomputation to study various business models and relatedalgorithmic processes within a computer science discipline.[54][55][56] The field of Computer Information Systems (CIS) studies computers and algorithmic processes, including their principles, their software and hardware designs, their applications, and their impact on society[57][58] while IS emphasizes functionality over design.[59]
Information technology (IT) is the application of computers andtelecommunications equipment to store, retrieve, transmit, and manipulate data,[60] often in the context of a business or other enterprise.[61] The term is commonly used as a synonym for computers and computer networks, but also encompasses other information distribution technologies such as television and telephones. Severalindustries are associated with information technology, including computer hardware, software,electronics,semiconductors, internet,telecom equipment,e-commerce, andcomputer services.[62][63]
Fiber-optic and photonic (optical) devices, which already have been used to transport data over long distances, are starting to be used by data centers, along with CPU and semiconductor memory components. This allows the separation of RAM from CPU by optical interconnects.[69] IBM has created anintegrated circuit with both electronic and optical information processing in one chip. This is denoted CMOS-integrated nanophotonics (CINP).[70] One benefit of optical interconnects is that motherboards, which formerly required a certain kind of system on a chip (SoC), can now move formerly dedicated memory and network controllers off the motherboards, spreading the controllers out onto the rack. This allows standardization of backplane interconnects and motherboards for multiple types of SoCs, which allows more timely upgrades of CPUs.[71]
Another field of research isspintronics. Spintronics can provide computing power and storage, without heat buildup.[72] Some research is being done on hybrid chips, which combinephotonics and spintronics.[73][74] There is also research ongoing on combiningplasmonics, photonics, and electronics.[75]
Cloud computing is a model that allows for the use of computing resources, such as servers or applications, without the need for interaction between the owner of these resources and the end user. It is typically offered as a service, making it an example ofSoftware as a Service,Platforms as a Service, andInfrastructure as a Service, depending on the functionality offered. Key characteristics include on-demand access, broad network access, and the capability of rapid scaling.[76] It allows individual users or small business to benefit fromeconomies of scale.
One area of interest in this field is its potential to support energy efficiency. Allowing thousands of instances of computation to occur on one single machine instead of thousands of individual machines could help save energy. It could also ease the transition to renewable energy source, since it would suffice to power one server farm with renewable energy, rather than millions of homes and offices.[77]
However, this centralized computing model poses several challenges, especially in security and privacy. Current legislation does not sufficiently protect users from companies mishandling their data on company servers. This suggests potential for further legislative regulations on cloud computing and tech companies.[78]
Quantum computing is an area of research that brings together the disciplines of computer science, information theory, and quantum physics. While the idea of information as part of physics is relatively new, there appears to be a strong tie between information theory and quantum mechanics.[79] Whereas traditional computing operates on a binary system of ones and zeros, quantum computing usesqubits. Qubits are capable of being in a superposition, i.e. in both states of one and zero, simultaneously. Thus, the value of the qubit is not between 1 and 0, but changes depending on when it is measured. This trait of qubits is known asquantum entanglement, and is the core idea of quantum computing that allows quantum computers to do large scale computations.[80] Quantum computing is often used for scientific research in cases where traditional computers do not have the computing power to do the necessary calculations, such inmolecular modeling. Large molecules and their reactions are far too complex for traditional computers to calculate, but the computational power of quantum computers could provide a tool to perform such calculations.[81]
^Butterfield, Andrew; Ngondi, Gerard Ekembe NgondiGerard Ekembe; Kerr, Anne (21 January 2016), Butterfield, Andrew; Ngondi, Gerard Ekembe; Kerr, Anne (eds.),"computer",A Dictionary of Computer Science, Oxford University Press,doi:10.1093/acref/9780199688975.001.0001,ISBN978-0-19-968897-5, retrieved5 February 2024
^Parsons, June (2022). "New Perspectives Computer Concepts Comprehensive | 21st Edition".Cengage. 21st edition.ISBN9780357674819.
^Veilleux, N. (2018, January 24).Become a programmer analyst at PERI Software Solutions. The Middlebury Sites Network. https://sites.middlebury.edu/middblogs/2018/01/24/become-a-programmer-analyst-at-peri-software-solutions/
^Trinity College Dublin."What is Computer System Engineering". Retrieved21 April 2006., "Computer engineers need not only to understand how computer systems themselves work, but also how they integrate into the larger picture. Consider the car. A modern car contains many separate computer systems for controlling such things as the engine timing, the brakes and the air bags. To be able to design and implement such a car, the computer engineer needs a broad theoretical understanding of all these various subsystems & how they interact.
^Abran, Alain; Moore, James W.; Bourque, Pierre; Dupuis, Robert; Tripp, Leonard L. (2004).Guide to the Software Engineering Body of Knowledge. IEEE. p. 1.ISBN978-0-7695-2330-9.
^Randell, Brian (10 August 2001)."The 1968/69 NATO Software Engineering Reports".Brian Randell's University Homepage. The School of the Computer Sciences, Newcastle University. Retrieved11 October 2008.The idea for the first NATO Software Engineering Conference, and in particular that of adopting the then practically unknown termsoftware engineering as its (deliberately provocative) title, I believe came originally from ProfessorFritz Bauer.
^Denning, Peter (July 1999). "COMPUTER SCIENCE: THE DISCIPLINE".Encyclopaedia of Computer Science (2000 Edition).The Domain of Computer Science: Even though computer science addresses both human-made and natural information processes, the main effort in the discipline has been directed toward human-made processes, especially information processing systems and machines
^Jessup, Leonard M.; Valacich, Joseph S. (2008).Information Systems Today (3rd ed.). Pearson Publishing. pp. –, 416.
^Davis, Timothy; Geist, Robert; Matzko, Sarah; Westall, James (March 2004). "τ'εχνη: A First Step".Technical Symposium on Computer Science Education:125–129.ISBN1-58113-798-2.In 1999, Clemson University established a (graduate) degree program that bridges the arts and the sciences... All students in the program are required to complete graduate level work in both the arts and computer science
^"Bachelor of Information Sciences (Computer Science)".Massey University. 24 February 2006. Archived fromthe original on 19 June 2006.Computer Science is the study of all aspects of computer systems, from the theoretical foundations to the very practical aspects of managing large software projects
^Polack, Jennifer (December 2009). "Planning a CIS Education Within a CS Framework".Journal of Computing Sciences in Colleges.25 (2):100–106.ISSN1937-4771.
^Hayes, Helen; Onkar Sharma (February 2003). "A decade of experience with a common first year program for computer science, information systems and information technology majors".Journal of Computing Sciences in Colleges.18 (3):217–227.ISSN1937-4771.In 1988, a degree program in Computer Information Systems (CIS) was launched with the objective of providing an option for students who were less inclined to become programmers and were more interested in learning to design, develop, and implement Information Systems, and solve business problems using the systems approach
^Freeman, Peter; Hart, David (August 2004)."A Science of Design for Software-Intensive Systems".Communications of the ACM.47 (8):19–21.doi:10.1145/1012037.1012054.ISSN0001-0782.S2CID14331332.Computer science and engineering needs an intellectually rigorous, analytical, teachable design process to ensure development of systems we all can live with ... Though the other components' connections to the software and their role in the overall design of the system are critical, the core consideration for a software-intensive system is the software itself, and other approaches to systematizing design have yet to solve the "software problem"—which won't be solved until software design is understood scientifically.
^On the later more broad application of the term IT, Keary comments- "In its original application 'information technology' was appropriate to describe the convergence of technologies with application in the broad field of data storage, retrieval, processing, and dissemination. This useful conceptual term has since been converted to what purports to be concrete use, but without the reinforcement of definition...the term IT lacks substance when applied to the name of any function, discipline, or position."Anthony Ralston (2000).Encyclopedia of computer science. Nature Pub. Group.ISBN978-1-56159-248-7. Retrieved12 May 2013..