Fields




Computer science is no more about computers than astronomy is about telescopes.

— Edsger Dijkstra

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. 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)—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.

Theoretical computer scienceedit

Theoretical Computer Science is mathematical and abstract in spirit, but it derives its motivation from the practical and everyday computation. Its aim is to understand the nature of computation and, as a consequence of this understanding, provide more efficient methodologies.

Theory of computationedit

According to Peter Denning, the fundamental question underlying computer science is, "What can be automated?" 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, is an open problem in the theory of computation.

DFAexample.svg Syntax tree.svg Complexity classes.svg
Automata theory Formal languages Computability theory Computational complexity theory
Interaction Net as Configuration.png Blochsphere.svg XNOR ANSI Labelled.svg Kellerautomat.svg
Models of computation Quantum computing theory Logic circuit theory Cellular automata

Information and coding theoryedit

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. Coding theory is the study of the properties of codes (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.

Hamming.jpg Binary symmetric channel.svg Digitalteilchen.svg H0 h1 fehler.jpg Mandelpart2 red.png
Coding theory Channel capacity Algorithmic information theory Signal detection theory Kolmogorov complexity

Data structures and algorithmsedit

Data structures and algorithms are the studies of commonly used computational methods and their computational efficiency.

O(n2) Sorting quicksort anim.gif Tree (computer science).svg TSP Deutschland 3.png SimplexRangeSearching.svg Contraction vertices.jpg
Analysis of algorithms Algorithm design Data structures Combinatorial optimization Computational geometry Randomized algorithms

Programming language theory and formal methodsedit

Programming language theory is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and their individual 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 specification, development and verification of software and hardware systems. 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 systems, where safety or 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 calculi, formal languages, automata theory, and program semantics, but also type systems and algebraic data types to problems in software and hardware specification and verification.

IF-THEN-ELSE-END flowchart.svg Compiler.svg Python add5 syntax.svg Prop-tableau-1.svg Coq plus comm screenshot.jpg
Formal semantics Type theory Compiler design Programming languages Formal verification Automated theorem proving

Computer systems and computational processesedit

Artificial intelligenceedit

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 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 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 "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.

Nicolas P. Rougier's rendering of the human brain.png Human eye, rendered from Eye.png Colored neural network.svg Markov Decision Process.svg
Computational learning theory Computer vision Neural networks Planning and scheduling
English.png Knight's tour.svg Ackley.gif AutonomicSystemModel.png
Natural language processing Computational game theory Evolutionary computation Autonomic computing
Neuron.svg KnnClassification.svg ROS C logo.jpg Rule alignment.gif
Representation and reasoning Pattern recognition Robotics Swarm intelligence

Computer architecture and organizationedit

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. Computer engineers study computational logic and design of computer hardware, from individual processor components, microcontrollers, personal computers to supercomputers and embedded systems. 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.

ABasicComputer.gif Intel Core2 arch.svg SIMD.svg Z80 arch.svg
Processing unit Microarchitecture Multiprocessing Processor design
Roomba original.jpg Flowchart.png Kernel Layout.svg Uarm metal wiki2.jpg
Ubiquitous computing Systems architecture Operating systems Input/output
Physical computing.svg FIR Filter General.svg Dep-1.svg Linker.svg
Embedded system Real-time computing Dependability Interpreter

Concurrent, parallel and distributed computingedit

Concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other. A number of mathematical models have been developed for general concurrent computation including Petri nets, process calculi and the Parallel Random Access Machine model. 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.

Computer networksedit

This branch of computer science aims to manage networks between computers worldwide.

Computer security and cryptographyedit

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. Cryptography is the practice and study of hiding (encryption) and therefore deciphering (decryption) information. Modern cryptography is largely related to computer science, for many encryption and decryption algorithms are based on their computational complexity.

Databases and data miningedit

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 models and query languages. Data mining is a process of discovering patterns in large data sets.

Computer graphics and visualizationedit

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 games.

Simx2=transl OK.svg FWDvsINV Kinematics HighResTransp.png 5-cell.gif Hud on the cat.jpg Visible light eye-tracking algorithm.jpg Csg tree.png
2D computer graphics Computer animation Rendering Mixed reality Virtual reality Solid modeling

Image and sound processingedit

Information can take the form of images, sound, video or other multimedia. Bits of information can be streamed via signals. Its 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 unsolved problems in theoretical computer science.

DIT-FFT-butterfly.png Bayer pattern on sensor.svg Opus quality comparison colorblind compatible.svg Quality comparison jpg vs saveforweb.jpg MeningiomaMRISegmentation.png Ætoms - Translation.svg
FFT algorithms Image processing Speech recognition Data compression Medical image computing Speech synthesis

Applied computer scienceedit

Computational science, finance and engineeringedit

Scientific computing (or computational science) is the field of study concerned with constructing mathematical models and 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, as well as societies and social situations (notably war games) along with their habitats, among many others. Modern computers enable optimization of such designs as complete aircraft. Notable in electrical and electronic circuit design are SPICE, as well as software for physical realization of new (or modified) designs. The latter includes essential design software for integrated circuits.citation needed

Lorenz attractor yb.svg Quark wiki.jpg Naphthalene-3D-balls.png 1u04-argonaute.png GalvesLocherbach - Low resolution.gif X-ray of hand, where bone age is automatically found by BoneXpert software.jpg Elmer-pump-heatequation.png Bachlut1.png
Numerical analysis Computational physics Computational chemistry Bioinformatics Neuroinformatics Medical informatics Computational engineering Computational musicology

Social computing and human-computer interactionedit

Social computing is an area that is concerned with the intersection of social behavior and computational systems. Human-computer interaction research develops theories, principles, and guidelines for user interface designers.

Software engineeringedit

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 doesn't just deal with the creation or manufacture of new software, but its internal arrangement and maintenance.

Comments

Popular posts from this blog

History

Computer science