Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Computer science
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Fields== {{Dynamic list}} {{further|Outline of computer science}} As a discipline, computer science spans a range of topics from theoretical studies of algorithms and the limits of computation to the practical issues of implementing computing systems in hardware and software.<ref name="CSAB1997">{{cite web|publisher=Computing Sciences Accreditation Board|title=Computer Science as a Profession|url=http://www.csab.org/comp_sci_profession.html |date=May 28, 1997| access-date=23 May 2010 |archive-url = https://web.archive.org/web/20080617030847/http://www.csab.org/comp_sci_profession.html |archive-date = June 17, 2008}}</ref><ref>{{cite book|author=Committee on the Fundamentals of Computer Science: Challenges and Opportunities, National Research Council|title=Computer Science: Reflections on the Field, Reflections from the Field|url=http://www.nap.edu/catalog.php?record_id=11106#toc|publisher=National Academies Press|isbn=978-0-309-09301-9|year=2004|access-date=August 31, 2008|archive-date=February 18, 2011|archive-url=https://web.archive.org/web/20110218122042/http://www.nap.edu/catalog.php?record_id=11106#toc|url-status=live}}</ref> [[CSAB (professional organization)|CSAB]], formerly called Computing Sciences Accreditation Board—which is made up of representatives of the [[Association for Computing Machinery]] (ACM), and the [[IEEE Computer Society]] (IEEE CS)<ref>{{cite web |url=http://www.csab.org/ |title=CSAB Leading Computer Education |publisher=CSAB |date=August 3, 2011 |access-date=19 November 2011 |archive-date=January 20, 2019 |archive-url=https://web.archive.org/web/20190120190336/http://www.csab.org/ |url-status=live }}</ref>—identifies four areas that it considers crucial to the discipline of computer science: ''theory of computation'', ''algorithms and data structures'', ''programming methodology and languages'', and ''computer elements and architecture''. In addition to these four areas, CSAB also identifies fields such as software engineering, artificial intelligence, computer networking and communication, database systems, parallel computation, distributed computation, human–computer interaction, computer graphics, operating systems, and numerical and [[symbolic computation]] as being important areas of computer science.<ref name="CSAB1997"/> ===Theoretical computer science=== {{main|Theoretical computer science}} ''Theoretical computer science'' is mathematical and abstract in spirit, but it derives its motivation from practical and everyday computation. It aims to understand the nature of computation and, as a consequence of this understanding, provide more efficient methodologies. ====Theory of computation==== {{main|Theory of computation}} According to Peter Denning, the fundamental question underlying computer science is, "What can be automated?"<ref name=DenningAutomated/> Theory of computation is focused on answering fundamental questions about what can be computed and what amount of resources are required to perform those computations. In an effort to answer the first question, [[computability theory]] examines which computational problems are solvable on various theoretical [[models of computation]]. The second question is addressed by [[computational complexity theory]], which studies the time and space costs associated with different approaches to solving a multitude of computational problems. The famous [[P = NP?]] problem, one of the [[Millennium Prize Problems]],<ref>[http://www.claymath.org/millennium/P_vs_NP/ Clay Mathematics Institute] P = NP {{webarchive |url=https://web.archive.org/web/20131014194456/http://www.claymath.org/millennium/P_vs_NP/ |date=October 14, 2013 }}</ref> is an open problem in the theory of computation. {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:DFAexample.svg|130px]] | [[File:Syntax tree.svg|96px]] | <math>M= \{ X : X \not\in X \}</math> | [[File:Complexity classes.svg|120px]] |- | [[Automata theory]] | [[Formal language]]s | [[Computability theory]] | [[Computational complexity theory]] |- | [[File:Interaction Net as Configuration.png|96px]] | [[File:Blochsphere.svg|96px]] | [[File:XNOR ANSI Labelled.svg]] | [[File:Kellerautomat.svg|96px]] |- | [[Models of computation]] | [[Quantum computer|Quantum computing theory]] | [[Circuit (computer science)|Logic circuit theory]] | [[Cellular automata]] |} ====Information and coding theory==== {{main|Information theory|Coding theory}} Information theory, closely related to [[probability]] and [[statistics]], is related to the quantification of information. This was developed by [[Claude Shannon]] to find fundamental limits on [[signal processing]] operations such as compressing data and on reliably storing and communicating data.<ref>{{cite web |date=October 14, 2002 |last=P. Collins |first=Graham |title=Claude E. Shannon: Founder of Information Theory |url=http://www.scientificamerican.com/article.cfm?id=claude-e-shannon-founder |work=Scientific American |access-date=December 12, 2014 |archive-date=January 16, 2014 |archive-url=https://web.archive.org/web/20140116183558/http://www.scientificamerican.com/article.cfm?id=claude-e-shannon-founder |url-status=live }}</ref> Coding theory is the study of the properties of [[code]]s (systems for converting information from one form to another) and their fitness for a specific application. Codes are used for [[data compression]], [[cryptography]], [[error detection and correction]], and more recently also for [[network coding]]. Codes are studied for the purpose of designing efficient and reliable [[data transmission]] methods. <ref>Van-Nam Huynh; Vladik Kreinovich; Songsak Sriboonchitta; 2012. ''Uncertainty Analysis in Econometrics with Applications''. Springer Science & Business Media. p. 63. {{ISBN|978-3-642-35443-4}}.</ref> {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:Hamming.jpg|96px]] | [[File:Binary symmetric channel.svg|96px]] | [[File:Digitalteilchen.svg|96px]] | [[File:H0 h1 fehler.jpg|96px]] | [[File:Mandelpart2 red.png|96px]] |- | [[Coding theory]] | [[Channel capacity]] | [[Algorithmic information theory]] | [[Signal detection theory]] | [[Kolmogorov complexity]] |} ====Data structures and algorithms==== {{main|Data structure|Algorithm}}Data structures and algorithms are the studies of commonly used computational methods and their computational efficiency. {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | {{math|''O''(''n''<sup>2</sup>)}} | [[File:Sorting quicksort anim.gif|96px]] | [[File:Tree (computer science).svg|96px]] | [[File:TSP Deutschland 3.png|96px]] | [[File:SimplexRangeSearching.svg|96px]] | [[File:Contraction vertices.jpg|96px]] |- | [[Analysis of algorithms]] | [[Algorithmics|Algorithm design]] | [[Data structures]] | [[Combinatorial optimization]] | [[Computational geometry]] | [[Randomized algorithms]] |} ====Programming language theory and formal methods==== {{main|Programming language theory|Formal methods}} Programming language theory is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of [[programming language]]s and their individual [[Programming language#Elements|features]]. It falls within the discipline of computer science, both depending on and affecting mathematics, software engineering, and [[linguistics]]. It is an active research area, with numerous dedicated academic journals. Formal methods are a particular kind of mathematically based technique for the [[formal specification|specification]], development and [[formal verification|verification]] of software and [[computer hardware|hardware]] systems.<ref>Phillip A. Laplante, (2010). ''Encyclopedia of Software Engineering'' Three-Volume Set (Print). CRC Press. p. 309. {{ISBN|978-1-351-24926-3}}.</ref> The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design. They form an important theoretical underpinning for software engineering, especially where safety or security is involved. Formal methods are a useful adjunct to software testing since they help avoid errors and can also give a framework for testing. For industrial use, tool support is required. However, the high cost of using formal methods means that they are usually only used in the development of high-integrity and [[life-critical system]]s, where safety or [[computer security|security]] is of utmost importance. Formal methods are best described as the application of a fairly broad variety of [[theoretical computer science]] fundamentals, in particular [[logic in computer science|logic]] calculi, [[formal language]]s, [[automata theory]], and [[program semantics]], but also [[type systems]] and [[algebraic data types]] to problems in software and hardware specification and verification. {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:IF-THEN-ELSE-END flowchart.svg|96px]] | <math>\Gamma\vdash x: \text{Int}</math> | [[File:Compiler.svg|96px]] | [[File:Python add5 syntax.svg|96px]] | [[File:Prop-tableau-1.svg|96px]] | [[File:Coq plus comm screenshot.jpg|96px]] |- | [[Semantics (computer science)|Formal semantics]] | [[Type theory]] | [[Compiler design]] | [[Programming language]]s | [[Formal verification]] | [[Automated theorem proving]] |} ===Applied computer science=== ====Computer graphics and visualization==== {{main|Computer graphics (computer science)}} Computer graphics is the study of digital visual contents and involves the synthesis and manipulation of image data. The study is connected to many other fields in computer science, including [[computer vision]], [[image processing]], and [[computational geometry]], and is heavily applied in the fields of special effects and [[video game]]s. {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:Simx2=transl OK.svg|96px]] | [[File:FWDvsINV Kinematics HighResTransp.png|96px]] | [[File:5-cell.gif|96px]] | [[File:Hud on the cat.jpg|96px]] | [[File:Visible light eye-tracking algorithm.jpg|96px]] | [[File:Csg tree.png|96px]] |- | [[2D computer graphics]] | [[Computer animation]] | [[Rendering (computer graphics)|Rendering]] | [[Mixed reality]] | [[Virtual reality]] | [[Solid modeling]] |} ====Image and sound processing==== {{main|Data processing}} [[Information]] can take the form of images, sound, video or other multimedia. [[Bit]]s of information can be streamed via [[signal]]s. Its [[Data processing|processing]] is the central notion of informatics, the European view on computing, which studies information processing algorithms independently of the type of information carrier – whether it is electrical, mechanical or biological. This field plays important role in [[information theory]], [[telecommunications]], [[information engineering]] and has applications in [[medical image computing]] and [[speech synthesis]], among others. ''What is the lower bound on the complexity of [[fast Fourier transform]] algorithms?'' is one of the [[List of unsolved problems in computer science|unsolved problems in theoretical computer science]]. {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:DIT-FFT-butterfly.png|96px]] | [[File:Bayer pattern on sensor.svg|96px]] | [[File:Opus quality comparison colorblind compatible.svg|96px]] | [[File:Quality comparison jpg vs saveforweb.jpg|96px]] | [[File:MeningiomaMRISegmentation.png|96px]] | [[File:Ætoms - Translation.svg|96px]] |- | [[Fast Fourier transform|FFT algorithms]] | [[Image processing]] | [[Speech recognition]] | [[Data compression]] | [[Medical image computing]] | [[Speech synthesis]] |} ====Computational science, finance and engineering==== {{main|Computational science|Computational finance|Computational engineering|Computational biology}} {{See also|List of computer-aided engineering software}} [[Scientific computing]] (or computational science) is the field of study concerned with constructing [[scientific modelling|mathematical models]] and [[numerical analysis|quantitative analysis]] techniques and using computers to analyze and solve [[scientific]] problems. A major usage of scientific computing is [[simulation]] of various processes, including computational [[fluid dynamics]], physical, electrical, and electronic systems and circuits, societies and social situations (notably war games) along with their habitats, and interactions among biological cells. Modern computers enable optimization of such designs as complete aircraft. Notable in electrical and electronic circuit design are SPICE,<ref>Muhammad H. Rashid, (2016). ''SPICE for Power Electronics and Electric Power''. CRC Press. p. 6. {{ISBN|978-1-4398-6047-2}}.</ref> as well as software for physical realization of new (or modified) designs. The latter includes essential design software for [[integrated circuit]]s.<ref>{{Cite news|title=What is an integrated circuit (IC)? A vital component of modern electronics|url=https://whatis.techtarget.com/definition/integrated-circuit-IC|access-date=2021-11-15|website=WhatIs.com|language=en|archive-date=November 15, 2021|archive-url=https://web.archive.org/web/20211115153823/https://whatis.techtarget.com/definition/integrated-circuit-IC|url-status=live}}</ref> {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:Lorenz attractor yb.svg|96px]] | [[File:Quark wiki.jpg|96px]] | [[File:Naphthalene-3D-balls.png|96px]] | [[File:1u04-argonaute.png|96px]] | [[File:GalvesLocherbach - Low resolution.gif|96px]] | [[File:Plutchik-wheel.svg|96px]] | [[File:X-ray of hand, where bone age is automatically found by BoneXpert software.jpg|75px]] | [[File:Elmer-pump-heatequation.png|94px]] | [[File:Bachlut1.png|75px]] |- | [[Numerical analysis]] | [[Computational physics]] | [[Computational chemistry]] | [[Bioinformatics]] | [[Neuroinformatics]] | [[Psychoinformatics]] | [[Medical informatics]] | [[Computational engineering]] | [[Computational musicology]] |} ====Human–computer interaction==== {{main|Human–computer interaction}} Human–computer interaction (HCI) is the field of study and research concerned with the design and use of [[Computer|computer systems]], mainly based on the analysis of the interaction between [[Human|humans]] and [[Interface (computing)|computer interfaces]]. HCI has several [[Human–computer interaction#Current research|subfields]] that focus on the relationship between [[Emotion|emotions]], [[social behavior]] and [[Electroencephalography|brain activity]] with [[Computer|computers]]. {| cellspacing="15" style="border:1px solid #ccc; text-align:center; margin:auto;" |[[File:Maker_Faire,_Berlin_(BL7C0099).jpg|95x95px]] |[[File:InterfaceNeuronaleDirecte-tag.svg|96x96px]] |[[File:Human-Centered_Design-Prozess_nach_HBS.png|96x96px]] |[[File:Physical_computing.svg|96x96px]] |[[File:WMID_social_media_network.png|96x96px]] |- |[[Affective computing]] |[[Brain–computer interface]] |[[Human-centered design]] |[[Physical computing]] |[[Social computing]] |} ====Software engineering==== {{main|Software engineering}} {{see also|Computer programming}} Software engineering is the study of designing, implementing, and modifying the software in order to ensure it is of high quality, affordable, maintainable, and fast to build. It is a systematic approach to software design, involving the application of engineering practices to software. Software engineering deals with the organizing and analyzing of software—it does not just deal with the creation or manufacture of new software, but its internal arrangement and maintenance. For example [[software testing]], [[systems engineering]], [[technical debt]] and [[software development process]]es. ====Artificial intelligence==== {{main|Artificial intelligence|Bio-inspired computing}} Artificial intelligence (AI) aims to or is required to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, learning, and communication found in humans and animals. From its origins in [[cybernetics]] and in the [[History of artificial intelligence|Dartmouth Conference]] (1956), artificial intelligence research has been necessarily cross-disciplinary, drawing on areas of expertise such as [[applied mathematics]], symbolic logic, [[semiotics]], [[electrical engineering]], [[philosophy of mind]], [[neurophysiology]], and [[social intelligence]]. AI is associated in the popular mind with [[Robotics|robotic development]], but the main field of practical application has been as an embedded component in areas of [[software development]], which require computational understanding. The starting point in the late 1940s was Alan Turing's question "[[Computing Machinery and Intelligence|Can computers think?]]", and the question remains effectively unanswered, although the [[Turing test]] is still used to assess computer output on the scale of human intelligence. But the automation of evaluative and predictive tasks has been increasingly successful as a substitute for human monitoring and intervention in domains of computer application involving complex real-world data. {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:Nicolas P. Rougier's rendering of the human brain.png|96px]] | [[File:Human eye, rendered from Eye.png|96px]] | [[File:Colored neural network.svg|96px]] | [[File:Markov Decision Process.svg|96px]] |- | [[Computational learning theory]] | [[Computer vision]] | [[Artificial neural network|Neural networks]] | [[Planning and scheduling]] |- | [[File:english.png|96px]] | [[File:Knight's tour.svg|96px]] | [[File:Ackley.gif|96px]] | [[File:AutonomicSystemModel.png|96px]] |- | [[Natural language processing]] | [[Algorithmic game theory|Computational game theory]] | [[Evolutionary computation]] | [[Autonomic computing]] |- | [[File:neuron.svg|96px]] | [[File:KnnClassification.svg|96px]] | [[File:ROS C logo.jpg|100px]] | [[File:Rule alignment.gif|96px]] |- | [[Knowledge representation and reasoning|Representation and reasoning]] | [[Pattern recognition]] | [[Robotics]] | [[Swarm intelligence]] |} ===Computer systems=== ====Computer architecture and microarchitecture==== {{main|Computer architecture|Microarchitecture|Computer engineering}} Computer architecture, or digital computer organization, is the conceptual design and fundamental operational structure of a computer system. It focuses largely on the way by which the central processing unit performs internally and accesses addresses in memory.<ref>{{cite web|last=A. Thisted|first=Ronald|title=Computer Architecture |url=http://galton.uchicago.edu/~thisted/Distribute/comparch.pdf |archive-url=https://ghostarchive.org/archive/20221009/http://galton.uchicago.edu/~thisted/Distribute/comparch.pdf |archive-date=2022-10-09 |url-status=live|publisher=The University of Chicago|date=April 7, 1997}}</ref> Computer engineers study [[computational logic]] and design of computer hardware, from individual [[Processor (computing)|processor]] components, [[microcontroller]]s, [[personal computer]]s to [[supercomputer]]s and [[embedded system]]s. The term "architecture" in computer literature can be traced to the work of Lyle R. Johnson and [[Frederick P. Brooks Jr.]], members of the Machine Organization department in IBM's main research center in 1959. {| style="border:1px solid #ccc; text-align:center; margin:auto;" cellspacing="15" |- | [[File:ABasicComputer.svg|96px]] | [[File:Intel Core2 arch.svg|96px]] | [[File:SIMD.svg|96px]] | [[File:Z80 arch.svg|96px]] |- | [[Processing unit]] | [[Microarchitecture]] | [[Multiprocessing]] | [[Processor design]] |- | [[File:Roomba original.jpg|96px]] | [[File:flowchart.png|96px]] | [[File:Kernel Layout.svg|96px]] | [[File:Uarm metal wiki2.jpg|96px]] |- | [[Ubiquitous computing]] | [[Systems architecture]] | [[Operating system]]s | [[Input/output]] |- | [[File:Physical computing.svg|96px]] | [[File:FIR Filter General.svg|96px]] | [[File:Dep-1.svg|96px]] | [[File:Linker.svg|96px]] |- | [[Embedded system]] | [[Real-time computing]] | [[Dependability]] | [[Interpreter (computing)|Interpreter]] |} ====Concurrent, parallel and distributed computing==== {{main|Concurrency (computer science)|Distributed computing}} Concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other.<ref>Jiacun Wang, (2017). ''Real-Time Embedded Systems''. Wiley. p. 12. {{ISBN|978-1-119-42070-5}}.</ref> A number of mathematical models have been developed for general concurrent computation including [[Petri net]]s, [[process calculi]] and the [[parallel random access machine]] model.<ref>Gordana Dodig-Crnkovic; Raffaela Giovagnoli, (2013). ''Computing Nature: Turing Centenary Perspective''. Springer Science & Business Media. p. 247. {{ISBN|978-3-642-37225-4}}.</ref> When multiple computers are connected in a network while using concurrency, this is known as a distributed system. Computers within that distributed system have their own private memory, and information can be exchanged to achieve common goals.<ref>Simon Elias Bibri (2018). ''Smart Sustainable Cities of the Future: The Untapped Potential of Big Data Analytics and Context-Aware Computing for Advancing Sustainability''. Springer. p. 74. {{ISBN|978-3-319-73981-6}}.</ref> ====Computer networks==== {{main|Computer network}} This branch of computer science aims studies the construction and behavior of computer networks. It addresses their performance, resilience, security, scalability, and cost-effectiveness, along with the variety of services they can provide.<ref>{{cite book |last1=Peterson |first1=Larry | last2=Davie | first2=Bruce |date=2000 |title=Computer Networks: A Systems Approach |url=https://book.systemsapproach.org/index.html |location=Singapore |publisher=Harcourt Asia |isbn= 9789814066433 |access-date=May 24, 2025}}</ref> ====Computer security and cryptography==== {{main|Computer security|Cryptography}} Computer security is a branch of computer technology with the objective of protecting information from unauthorized access, disruption, or modification while maintaining the accessibility and usability of the system for its intended users. Historical [[cryptography]] is the art of writing and deciphering secret messages. Modern cryptography is the scientific study of problems relating to distributed computations that can be attacked.<ref>{{Cite book|last=Katz|first=Jonathan|url=https://www.worldcat.org/oclc/137325053|title=Introduction to modern cryptography|date=2008|publisher=Chapman & Hall/CRC|others=Yehuda Lindell|isbn=978-1-58488-551-1|location=Boca Raton|oclc=137325053|access-date=November 17, 2021|archive-date=May 6, 2022|archive-url=https://web.archive.org/web/20220506003141/http://www.worldcat.org/oclc/137325053|url-status=live}}</ref> Technologies studied in modern cryptography include symmetric and asymmetric [[encryption]], [[digital signature]]s, [[cryptographic hash function]]s, [[key-agreement protocol]]s, [[blockchain]], [[zero-knowledge proof]]s, and [[garbled circuit]]s. ====Databases and data mining==== {{main|Database|Data mining}} A database is intended to organize, store, and retrieve large amounts of data easily. Digital databases are managed using database management systems to store, create, maintain, and search data, through [[database model]]s and [[query language]]s. Data mining is a process of discovering patterns in large data sets.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)