Professional Documents
Culture Documents
Fields of Computer Science
Fields of Computer Science
Fields of Computer Science
Mathematical foundations
Cryptography: Algorithms to protect private data, including
encryption .
Type theory : Formal analysis of data types, and the use of
these to understand the properties of programs, in particular
their security.
Databases
Data mining : Study of algorithms to search and process
information in documents and databases; closely related to the
acquisition of information.
computer graphics
Computer graphics : Algorithms both to synthetically
generate visual images and to integrate or alter visual and
spatial information taken from the real world.
Digital image processing : For example for remote sensors.
Computational Geometry : For example fast algorithms to
select only the visible points in a polyhedron seen from a
certain angle, used in 3D engines.
Scientific computing
Quantum Computing: Computing paradigm based on
Quantum Mechanics
Relationship with other fields
As a recent discipline, there are several alternative definitions for
computer science. This can be seen as a form of science,
mathematics or a new discipline that cannot be categorized
following current models.
Computer science frequently intersects with other areas of
research, such as physics and linguistics. But it is with
mathematics that it is considered to have a greater degree of
relationship. This is evidenced by the fact that early work in the
area was heavily influenced by mathematicians such as Kurt
Gödel and Alan Turing. Today there continues to be a useful
exchange of ideas between both fields in areas such as
mathematical logic, category theory, domain theory, algebra and
geometry.
Another point to note is that despite its name, computer science
rarely involves the actual study of the machines known as
computers. In fact, renowned scientist Edsger Dijkstra is widely
cited for saying "Computer science is as little related to computers
as astronomy is to telescopes." Due to this, it was proposed to find
a defined name for this emerging science, which would avoid the
relationship with computers.
A first proposal was that of Peter Naur, who coined the term
datalogy, to reflect the fact that the new discipline was
fundamentally concerned with the processing of data, regardless
of the tools of said processing, whether computers or
mathematical devices. The first scientific institution to adopt the
name was the Department of Datatology at the University of
Copenage, founded in 1969 , with Peter Naur himself being the
first professor of datatology. This name is mainly used in
Scandinavian countries. Likewise, in the early days, a large
number of terms appeared associated with computing
practitioners. In this list you can see those suggested in ACM
magazines and communications: Turingenier, Turologist, flow-
charts-man, applied metamathematician, and applied
epistemologist.
Three months later the term contologist was suggested, followed
by hippologue the following year. The term computing was also
suggested for the discipline. Informatics was the most frequently
used term throughout Europe.
The design and development of computers and computing
systems is generally considered a field claimed by disciplines
outside of computer science. For example, the study of hardware
is usually considered part of computer engineering, while the
study of commercial computer systems and their development is
usually called information technology (IT) or information
systems. However, there is a close communication of ideas
between the different disciplines related to computers. Computer
science is often criticized by other groups who consider it
insufficiently rigorous and scientific. This opinion is captured in
the expression: "Science is to computer science as hydrodynamics
is to plumbing", attributed to Stan Kelly-Bootle and others like
him. Research in computer science is usually also related to other
disciplines, such as cognitive science, physics (see quantum
computing), linguistics, etc.
The relationship between computer science and software
engineering is a much-discussed topic, with disputes over what
the term "software engineering" really means and how computer
science is defined. Some people believe that software engineering
would be a subset of computer science. Others, for their part,
taking into account the relationship between other scientific and
engineering disciplines, believe that the main objective of
computer science would be to study the properties of computing
in general, while the objective of software engineering would be
to design specific computations to achieve practical objectives,
which would become different disciplines. This point of view is
maintained, among others, by (Parnas 1998 ). There are even
others who maintain that software engineering could not exist.
Academic, political and funding issues in computer science areas
tend to be drastically influenced by the judgment of the
department in charge of research and education at each university,
which may be mathematics or engineering oriented. Mathematics-
oriented computer science departments typically align on the side
of scientific computing and numerical computing applications.
The term scientific computing, which should not be confused with
computer science, designates all those practices aimed at
modeling, setting up experiments and validating scientific
theories using computational means. In these cases, computing is
a mere tool and the effort is directed toward advancing in the
target fields (physics, biology, fluid mechanics, radio
transmission,...) rather than in computer science itself.
Finally, the general public sometimes confuses computer science
with vocational fields that work with computers, or thinks that it
is about their own experience with computers, which typically
involves activities such as gaming, web browsing, and text
processing. However, the whole point of computer science goes
beyond understanding the properties of the programs used to
implement software applications such as games and web
browsers, and uses that understanding to create new programs or
improve existing ones.