Computer Science - Algorithms, Complexity, Programming - Britannica
Computer Science - Algorithms, Complexity, Programming - Britannica
me Games & Quizzes History & Society Science & Tech Biographies Animals & Nature Geography
Home Science
keyboard_arrow_right Mathematics
keyboard_arrow_right
computer science
print
Print verified
Cite share
Share message
Feedback more_vert
tocTable of Contents
Recent News
Jan. 5, 2024, 4:09 AM ET (Deutsche Welle)
First graphene semiconductor could lead to faster
computers
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 1/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 2/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
Britannica Quiz
In the 1950s, most computer users worked either in scientific research labs or
in large corporations. The former group used computers to help them make
complex mathematical calculations (e.g., missile trajectories), while the latter
group used computers to manage large amounts of corporate data (e.g.,
payrolls and inventories). Both groups quickly learned that writing programs
in the machine language of zeros and ones was not practical or reliable. This
discovery led to the development of assembly language in the early 1950s,
which allows programmers to use symbols for instructions (e.g., ADD for
addition) and variables (e.g., X). Another program, known as an assembler,
translated these symbolic programs into an equivalent binary program whose
steps the computer could carry out, or “execute.”
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 4/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
common tasks to be reused. This was a first step in the development of the
computer science field called software engineering.
Later in the 1950s, assembly language was found to be so cumbersome that the
development of high-level languages (closer to natural languages) began to
support easier, faster programming. FORTRAN emerged as the main high-
level language for scientific programming, while COBOL became the main
language for business programming. These languages carried with them the
need for different software, called compilers, that translate high-level language
programs into machine code. As programming languages became more
powerful and abstract, building compilers that create high-quality machine
code and that are efficient in terms of execution speed and storage
consumption became a challenging computer science problem. The design and
implementation of high-level languages is at the heart of the computer science
field called programming languages.
Increasing use of computers in the early 1960s provided the impetus for the
development of the first operating systems, which consisted of system-resident
software that automatically handled input and output and the execution of
programs called “jobs.” The demand for better computational techniques led to
a resurgence of interest in numerical methods and their analysis, an activity
that expanded so widely that it became known as computational science.
The 1970s and ’80s saw the emergence of powerful computer graphics devices,
both for scientific modeling and other visual activities. (Computerized
graphical devices were introduced in the early 1950s with the display of crude
images on paper plots and cathode-ray tube [CRT] screens.) Expensive
hardware and the limited availability of software kept the field from growing
until the early 1980s, when the computer memory required for bitmap
graphics (in which an image is made up of small rectangular pixels) became
more affordable. Bitmap technology, together with high-resolution display
screens and the development of graphics standards that make software less
machine-dependent, has led to the explosive growth of the field. Support for all
these activities evolved into the field of computer science known as graphics
and visual computing.
Closely related to this field is the design and analysis of systems that interact
directly with users who are carrying out various computational tasks. These
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 5/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
In the 1960s the invention of magnetic disk storage provided rapid access to
data located at an arbitrary place on the disk. This invention led not only to
more cleverly designed file systems but also to the development of database
and information retrieval systems, which later became essential for storing,
retrieving, and transmitting large amounts and wide varieties of data across
the Internet. This field of computer science is known as information
management.
So, to summarize, the discipline of computer science has evolved into the
following 15 distinct fields:
Computational science
Human-computer interaction
Information management
Intelligent systems
Operating systems
Platform-based development
Programming languages
Software engineering
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 8/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
Although data items are stored consecutively in memory, they may be linked
together by pointers (essentially, memory addresses stored with an item to
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 9/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
indicate where the next item or items in the structure are found) so that the
data can be organized in ways similar to those in which they will be accessed.
The simplest such structure is called the linked list, in which noncontiguously
stored items may be accessed in a pre-specified order by following the pointers
from one item in the list to the next. The list may be circular, with the last item
pointing to the first, or each element may have pointers in both directions to
form a doubly linked list. Algorithms have been developed for efficiently
manipulating such lists by searching for, inserting, and removing items.
Pointers also provide the ability to implement more complex data structures. A
graph, for example, is a set of nodes (items) and links (known as edges) that
connect pairs of items. Such a graph might represent a set of cities and the
highways joining them, the layout of circuit elements and connecting wires on
a memory chip, or the configuration of persons interacting via a social network.
Typical graph algorithms include graph traversal strategies, such as how to
follow the links from node to node (perhaps searching for a node with a
particular property) in a way that each node is visited only once. A related
problem is the determination of the shortest path between two given nodes on
an arbitrary graph. (See graph theory.) A problem of practical interest in
network algorithms, for instance, is to determine how many “broken” links can
be tolerated before communications begin to fail. Similarly, in very-large-scale
integration (VLSI) chip design it is important to know whether the graph
representing a circuit is planar, that is, whether it can be drawn in two
dimensions without any links crossing (wires touching).
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 10/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
required increases with the number of items squared or with the exponential of
that number). At the far end of this continuum lie the murky seas of intractable
problems—those whose solutions cannot be efficiently implemented. For these
problems, computer scientists seek to find heuristic algorithms that can almost
solve the problem and run in a reasonable amount of time.
Further away still are those algorithmic problems that can be stated but are not
solvable; that is, one can prove that no program can be written to solve the
problem. A classic example of an unsolvable algorithmic problem is the halting
problem, which states that no program can be written that can predict whether
or not any other program halts after a finite number of steps. The unsolvability
of the halting problem has immediate practical bearing on software
development. For instance, it would be frivolous to try to develop a software
tool that predicts whether another program being developed has an infinite
loop in it (although having such a tool would be immensely beneficial).
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 11/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
Britannica Quiz
instance, suppose that the instruction is a string of bits that is the code for
LOAD 10. This instruction loads the contents of memory location 10 into the
ALU. The next instruction, say ADD 15, is fetched. The control unit then loads
the contents of memory location 15 into the ALU and adds it to the number
already there. Finally, the instruction STORE 20 would store that sum into
location 20. At this level, the operation of a computer is not much different
from that of a pocket calculator.
In general, programs are not just lengthy sequences of LOAD, STORE, and
arithmetic operations. Most importantly, computer languages include
conditional instructions—essentially, rules that say, “If memory location n
satisfies condition a, do instruction number x next, otherwise do instruction
y.” This allows the course of a program to be determined by the results of
previous operations—a critically important ability.
Logic design is the area of computer science that deals with the design of
electronic circuits using the fundamental principles and properties of logic (see
Boolean algebra) to carry out the operations of the control unit, the ALU, the
I/O controllers, and other hardware. Each logical function (AND, OR, and
NOT) is realized by a particular type of device called a gate. For example, the
addition circuit of the ALU has inputs corresponding to all the bits of the two
numbers to be added and outputs corresponding to the bits of the sum. The
arrangement of wires and gates that link inputs to outputs is determined by the
mathematical definition of addition. The design of the control unit provides the
circuits that interpret instructions. Due to the need for efficiency, logic design
must also optimize the circuitry to function with maximum speed and has a
minimum number of gates and circuits.
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 13/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 14/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
often replicated so that the backup component can take over if needed. Such
applications as aircraft control and manufacturing process control run on
systems with backup processors ready to take over if the main processor fails,
and the backup systems often run in parallel so the transition is smooth. If the
systems are critical in that their failure would be potentially disastrous (as in
aircraft control), incompatible outcomes collected from replicated processes
running in parallel on separate machines are resolved by a voting mechanism.
Computer scientists are involved in the analysis of such replicated systems,
providing theoretical approaches to estimating the reliability achieved by a
given configuration and processor parameters, such as average time between
failures and average time required to repair the processor. Fault tolerance is
also a desirable feature in distributed systems and networks. For example, an
advantage of a distributed database is that data replicated on different network
hosts can provide a natural backup mechanism when one host fails.
Computational science
Computational science applies computer simulation, scientific visualization,
mathematical modeling, algorithms, data structures, networking, database
design, symbolic computation, and high-performance computing to help
advance the goals of various disciplines. These disciplines include biology,
chemistry, fluid dynamics, archaeology, finance, sociology, and forensics.
Computational science has evolved rapidly, especially because of the dramatic
growth in the volume of data transmitted from scientific instruments. This
phenomenon has been called the “big data” problem.
Several factors must be considered when applying numerical methods: (1) the
conditions under which the method yields a solution, (2) the accuracy of the
solution, (3) whether the solution process is stable (i.e., does not exhibit error
growth), and (4) the computational complexity (in the sense described above)
of obtaining a solution of the desired accuracy.
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 16/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
Human-computer interaction
Human-computer interaction (HCI) is concerned with designing effective
interaction between users and computers and the construction of interfaces
that support this interaction. HCI occurs at an interface that includes both
software and hardware. User interface design impacts the life cycle of software,
so it should occur early in the design process. Because user interfaces must
accommodate a variety of user styles and capabilities, HCI research draws on
several disciplines including psychology, sociology, anthropology, and
engineering. In the 1960s, user interfaces consisted of computer consoles that
allowed an operator directly to type commands that could be executed
immediately or at some future time. With the advent of more user-friendly
personal computers in the 1980s, user interfaces became more sophisticated,
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 17/18
1/25/24, 12:49 AM Computer science - Algorithms, Complexity, Programming | Britannica
so that the user could “point and click” to send a command to the operating
system.
Thus, the field of HCI emerged to model, develop, and measure the
effectiveness of various types of interfaces between a computer application and
the person accessing its services. GUIs
Load enable users
Next Page to communicate with the
keyboard_arrow_down
computer by such simple means as pointing to an icon with a mouse or
touching it with a stylus or forefinger. This technology also supports
windowing environments on a computer screen, which allow users to work
with different applications simultaneously, one in each window.
https://www.britannica.com/science/computer-science/Algorithms-and-complexity 18/18