COMPUTERS (notes from Grolier Encyclopedia)

Compiled by Paul Tate

A computer is an apparatus built to perform routine calculations with speed, reliability, and ease. In addition to this basic function, the advance of technology has enabled computers to provide numerous services for an ever-increasing number of people. Since their introduction in the 1940s, computers have become an integral part of the modern world. Besides the readily apparent systems found in government sites, industries, offices, and homes, microcomputers are now also unobtrusively embedded in a multitude of everyday locations such as automobiles, aircraft, telephones, videocassette machines, and kitchen appliances.

The three basic types are digital, analog, and hybrid computers. Digital computers function internally and perform operations exclusively with digital, or discrete, numbers (see digital technology). The most familiar and the type on which most progress has centered, they are the focus of the following article. Analog computers use continuously variable parts exclusively for internal representation of magnitudes and to accomplish their built-in operations (see analog devices). Hybrid computers use both continuously variable techniques and discrete digital techniques in operation.

Digital, analog, and hybrid computers are conceptually similar in that they all depend on outside instructions. In practice, they differ most noticeably in the means they provide for receiving new programs to do new calculating jobs. Digital computers receive new programs quite easily, either through manual instructions or by automatic means. For analog or hybrid computers, however, reprogramming is likely to involve partial disassembly and reconnection of components. Because analog computers are assemblies of physical apparatuses arranged so as to enact the specific type of mathematical relationship for which solutions are to be computed, the choice of a new relationship may require a new assembly. To the extent that analog machines can be considered programmable, their program is rebuilt into their structure for each job.



Historically, the most important early computing instrument is the abacus, which has been known and widely used for more than 2,000 years. Another computing instrument, the astrolabe, was also in use about 2,000 years ago for navigation.

Blaise Pascal is widely credited with building the first "digital calculating machine" in 1642. It performed only additions of numbers entered by means of dials and was intended to help Pascal's father, who was a tax collector. In 1671, Gottfried Wilhelm von Leibniz invented a computer that was built in 1694; it could add and, by successive adding and shifting, multiply. Leibniz invented a special "stepped gear" mechanism for introducing the addend digits, and this mechanism is still in use. The prototypes built by Leibniz and Pascal were not widely used but remained curiosities until more than a century later, when Tomas of Colmar (Charles Xavier Thomas) developed (1820) the first commercially successful mechanical calculator that could add, subtract, multiply, and divide. A succession of improved "desk-top" mechanical calculators by various inventors followed, so that by about 1890 the available built-in operations included accumulation of partial results, storage and reintroduction of past results, and printing of results, each requiring manual initiation. These improvements were made primarily to suit commercial users, with little attention given to the needs of science.


While Tomas of Colmar was developing the desk-top calculator a series of very remarkable developments in computers was initiated in Cambridge, England, by Charles Babbage. Babbage realized (1812) that many long computations, especially those needed to prepare mathematical tables, consisted of routine operations that were regularly repeated; from this he surmised that it ought to be possible to do these operations automatically. He began to design an automatic mechanical calculating machine, which he called a "difference engine," and by 1822 he had built a small working model for demonstration. With financial help from the British government, Babbage started construction of a full-scale difference engine in 1823. It was intended to be steam-powered; fully automatic, even to the printing of the resulting tables; and commanded by a fixed instruction program.

The difference engine, although of limited flexibility and applicability, was conceptually a great advance. Babbage continued work on it for 10 years, but in 1833 he lost interest because he had a "better idea"--the construction of what today would be described as a general-purpose, fully program-controlled, automatic mechanical digital computer. Babbage called his machine an "analytical engine"; the characteristics aimed at by this design show true prescience, although this could not be fully appreciated until more than a century later. The plans for the analytical engine specified a parallel decimal computer operating on numbers (words) of 50 decimal digits and provided with a storage capacity (memory) of 1,000 such numbers. Built-in operations were to include everything that a modern general-purpose computer would need, even the all-important "conditional control transfer" capability, which would allow instructions to be executed in any order, not just in numerical sequence. The analytical engine was to use punched cards (similar to those used on a Jacquard loom), which were to be read into the machine from any of several reading stations. It was designed to operate automatically, by steam power, with only one attendant.

Babbage's computers were never completed. Various reasons are advanced for his failure, most frequently the lack of precision machining techniques at the time. Another conjecture is that Babbage was working on the solution of a problem that few people in 1840 urgently needed to solve.

After Babbage there was a temporary loss of interest in automatic digital computers. Between 1850 and 1900 great advances were made in mathematical physics, and it came to be understood that most observable dynamic phenomena can be characterized by differential equations, so that ready means for their solution and for the solution of other problems of calculus would be helpful. Moreover, from a practical standpoint, the availability of steam power caused manufacturing, transportation, and commerce to thrive and led to a period of great engineering achievement. The designing of railroads and the construction of steamships, textile mills, and bridges required differential calculus to determine such quantities as centers of gravity, centers of buoyancy, moments of inertia, and stress distributions; even the evaluation of the power output of a steam engine required practical mathematical integration. A strong need thus developed for a machine that could rapidly perform many repetitive calculations.

   Use of Punched Cards by Hollerith

A step toward automated computation was the introduction of punched cards, which were first successfully used in connection with computing in 1890 by Herman Hollerith and James Powers, working for the U.S. Census Bureau. They developed devices that could automatically read the information that had been punched into cards, without human intermediation. Reading errors were consequently greatly reduced, work flow was increased, and, more important, stacks of punched cards could be used as an accessible memory store of almost unlimited capacity; furthermore, different problems could be stored on different batches of cards and worked on as needed.

These advantages were noted by commercial interests and soon led to the development of improved punch-card business-machine systems by International Business Machines (IBM), Remington-Rand, Burroughs, and other corporations. These systems used electromechanical devices, in which electrical power provided mechanical motion--such as for turning the wheels of an adding machine. Such systems soon included features to feed in automatically a specified number of cards from a "read-in" station; perform such operations as addition, multiplication, and sorting; and feed out cards punched with results. The machines were slow, typically processing from 50 to 250 cards per minute, with each card holding up to 80 decimal numbers. At the time, however, punched cards were an enormous step forward.

   Automatic Digital Computers

By the late 1930s punched-card machine techniques had become well established and reliable, and several research groups strove to build automatic digital computers. One promising machine, constructed of standard electromechanical parts, was built by an IBM team led by Howard Hathaway Aiken. Aiken's machine, called the Harvard Mark I, handled 23-decimal-place numbers (words) and could perform all four arithmetic operations. Moreover, it had special built-in programs, or subroutines, to handle logarithms and trigonometric functions. The Mark I was originally controlled from prepunched paper tape without provision for reversal, so that automatic "transfer of control" instructions could not be programmed. Output was by card punch and electric typewriter. Although the Mark I used IBM rotating counter wheels as key components in addition to electromagnetic relays, the machine was classified as a relay computer. It was slow, requiring 3 to 5 seconds for a multiplication, but it was fully automatic and could complete long computations. Mark I was the first of a series of computers designed and built under Aiken's direction.

   Electronic Digital Computers

The outbreak of World War II produced a desperate need for computing capability, especially for the military. New weapons systems were produced for which trajectory tables and other essential data were lacking. In 1942, J. Presper Eckert, John W. Mauchly, and their associates at the Moore School of Electrical Engineering of the University of Pennsylvania decided to build a high-speed electronic computer to do the job. This machine became known as ENIAC, for Electronic Numerical Integrator and Computer (or Calculator). The size of its numerical word was 10 decimal digits, and it could multiply two such numbers at the rate of 300 products per second, by finding the value of each product from a multiplication table stored in its memory. Although difficult to operate, ENIAC was still many times faster than the previous generation of relay computers.

ENIAC used 18,000 standard vacuum tubes, occupied 167.3 m(2) (1,800 ft(2)) of floor space and consumed about 180,000 watts of electrical power. It had punched-card input and output and arithmetically had 1 multiplier, 1 divider-square rooter, and 20 adders employing decimal "ring counters," which served as adders and also as quick-access (0.0002 seconds) read-write register storage. The executable instructions composing a program were embodied in the separate units of ENIAC, which were plugged together to form a route through the machine for the flow of computations. These connections had to be redone for each different problem, together with presetting function tables and switches. This "wire-your-own" instruction technique was inconvenient, and only with some license could ENIAC be considered programmable; it was, however, efficient in handling the particular programs for which it had been designed. ENIAC is generally acknowledged to be the first successful high-speed electronic digital computer (EDC) and was productively used from 1946 to 1955. A controversy developed in 1971, however, over the patentability of ENIAC's basic digital concepts, the claim being made that another U.S. physicist, John V. Atanasoff, had already used the same ideas in a simpler vacuum-tube device he built in the 1930s at Iowa State College. In 1973 the court found in favor of the company using the Atanasoff claim.

   The Modern "Stored Program" EDC

Intrigued by the success of ENIAC, the mathematician John von Neumann undertook (1945) a theoretical study of computation that demonstrated that a computer could have a very simple, fixed physical structure and yet be able to execute any kind of computation effectively by means of proper programmed control without the need for any changes in hardware. Von Neumann contributed a new understanding of how practical fast computers should be organized and built; these ideas, often referred to as the stored-program technique, became fundamental for future generations of high-speed digital computers.

The stored-program technique involves many features of computer design and function besides the one named; in combination, these features make very-high-speed operation feasible. Details cannot be given here, but a glimpse may be provided by considering what 1,000 arithmetic operations per second implies. If each instruction in a job program were used only once in consecutive order, no human programmer could generate enough instructions to keep the computer busy. Arrangements must be made, therefore, for parts of the job program called subroutines to be used repeatedly in a manner that depends on how the computation progresses. Also, it would clearly be helpful if instructions could be altered as needed during a computation to make them behave differently. Von Neumann met these two needs by providing a special type of machine instruction called conditional control transfer--which permitted the program sequence to be interrupted and reinitiated at any point--and by storing all instruction programs together with data in the same memory unit, so that, when desired, instructions could be arithmetically modified in the same way as data.

Computing and programming became faster, more flexible, and more efficient, with the instructions in subroutines performing far more computational work. Frequently used subroutines did not have to be reprogrammed for each new problem but could be kept intact in "libraries" and read into memory when needed. Thus, much of a given program could be assembled from the subroutine library. The all-purpose computer memory became the assembly place in which parts of a long computation were stored, worked on piecewise, and assembled to form the final results. The computer control served as an errand runner for the overall process. As soon as the advantages of these techniques became clear, the techniques became standard practice.

The first generation of modern programmed electronic computers to take advantage of these improvements appeared in 1947. This group included computers using random access memory (RAM), which is a memory designed to give almost constant access to any particular piece of information. These machines had punched-card or punched-tape input and output devices and RAMs of 1,000-word capacity with an access time of 0.5 microseconds (0.5 x 10(-6) sec); some of them could perform multiplications in 2 to 4 microseconds. Physically, they were much more compact than ENIAC: some were about the size of a grand piano and required 2,500 small electron tubes, far fewer than required by the earlier machines. The first-generation stored-program computers required considerable maintenance, attained perhaps 70% to 80% reliable operation, and were used for 8 to 12 years. Typically, they were programmed directly in machine language, although by the mid-1950s progress had been made in aspects of advanced programming. These machines included EDVAC and UNIVAC (see UNIVAC), the first commercially available computers.

   Advances in the 1950s

Early in the 1950s two important engineering discoveries changed the image of the field, from one of fast but often unreliable hardware to an image of relatively high reliability and even greater capability. These discoveries were the magnetic-core memory and the transistor-circuit element (see computer memory).

These new technical discoveries rapidly found their way into new models of digital computers; RAM capacities increased from 8,000 to 64,000 words in commercially available machines by the early 1960s, with access times of 2 or 3 microseconds. These machines were very expensive to purchase or to rent and were especially expensive to operate because of the cost of expanding programming. Such computers were typically found in large computer centers--operated by industry, government, and private laboratories--staffed with many programmers and support personnel. This situation led to modes of operation enabling the sharing of the high capability available; one such mode is batch processing, in which problems are prepared and then held ready for computation on a relatively inexpensive storage medium, such as magnetic drums, magnetic-disk packs, or magnetic tapes. When the computer finishes with a problem, it typically "dumps" the whole problem--program and results--on one of these peripheral storage units and takes in a new problem. Another mode of use for fast, powerful machines is called time-sharing. In time-sharing the computer processes many waiting jobs in such rapid succession that each job progresses as quickly as if the other jobs did not exist, thus keeping each customer satisfied. Such operating modes require elaborate "executive" programs to attend to the administration of the various tasks.

   Advances in the 1960s

In the 1960s efforts to design and develop the fastest possible computers with the greatest capacity reached a turning point with the completion of the LARC machine for Livermore Radiation Laboratories of the University of California by the Sperry-Rand Corporation, and the Stretch computer by IBM. The LARC had a core memory of 98,000 words and multiplied in 10 microseconds. Stretch was provided with several ranks of memory having slower access for the ranks of greater capacity, the fastest access time being less than 1 microsecond and the total capacity about 100 million words.

During this period the major computer manufacturers began to offer a range of computer capabilities and costs, as well as various peripheral equipment--such input means as consoles and card feeders; such output means as page printers, cathode-ray-tube displays, and graphing devices; and optional magnetic-tape and magnetic-disk file storage. These found wide use in business for such applications as accounting, payroll, inventory control, ordering supplies, and billing. Central processing units (CPUs) for such purposes did not need to be very fast arithmetically and were primarily used to access large amounts of records on file, keeping these up to date. Most computer systems were delivered for the more modest applications, such as in hospitals for keeping track of patient records, medications, and treatments given. They are also used in automated library systems, such as MEDLARS, the National Medical Library retrieval system, and in the Chemical Abstracts system, where computer records now on file cover nearly all known chemical compounds.

   Later Advances

The trend during the 1970s was, to some extent, away from extremely powerful, centralized computational centers and toward a broader range of applications for less-costly computer systems. Most continuous-process manufacturing, such as petroleum refining and electrical-power distribution systems, now use computers of relatively modest capability for controlling and regulating their activities. In the 1960s the programming of applications problems was an obstacle to the self-sufficiency of moderate-size on-site computer installations, but great advances in applications programming languages are removing these obstacles. Applications languages are now available for controlling a great range of manufacturing processes, for computer operation of machine tools, and for many other tasks.

Moreover, a revolution in computer hardware came about that involved miniaturization of computer-logic circuitry and of component manufacture by large-scale integration, or LSI, techniques. In the 1950s it was realized that "scaling down" the size of electronic digital computer circuits and parts would increase speed and efficiency and thereby improve performance--if only manufacturing methods were available to do this. About 1960, photoprinting of conductive circuit boards to eliminate wiring became highly developed. It then became possible to build resistors and capacitors into the circuitry by photographic means (see printed circuit).

In the 1970s vacuum deposition of transistors became common, and entire assemblies, such as adders, shifting registers, and counters, became available on tiny "chips." During this decade many companies, some new to the computer field, introduced programmable minicomputers supplied with software packages. The size-reduction trend continued with the introduction of personal computers, which are programmable machines small enough and inexpensive enough to be purchased and used by individuals (see computer, personal). Many companies, such as Apple Computer and Radio Shack, introduced very successful personal computers. Augmented in part by a fad in computer, or video, games, development of these small computers expanded rapidly.

In the 1980s, very large-scale integration (VLSI), in which hundreds of thousands of transistors are placed on a single chip, became increasingly common. During the decade the Japanese government announced a massive plan to design and build a new generation--the so-called fifth generation--of supercomputers that would employ new technologies in very large-scale integration. This project, however, was abandoned by the early 1990s (see artificial intelligence). The enormous success of the personal computer and resultant advances in microprocessor technology initiated a process of attrition among giants of the computer industry. That is, as a result of advances continually being made in the manufacture of chips, rapidly increasing amounts of computing power could be purchased for the same basic costs. Microprocessors equipped with ROM, or read-only memory (which stores constantly used, unchanging programs), now were also performing an increasing number of process-control, testing, monitoring, and diagnostic functions, as in automobile ignition-system, engine, and production-line inspection tasks.

By the early 1990s these changes were forcing the computer industry as a whole to make striking adjustments. Long-established and more recent giants of the field--most notably, such companies as IBM, Digital Equipment Corporation, and Italy's Olivetti--were reducing their work staffs, shutting down factories, and dropping subsidiaries. At the same time, producers of personal computers continued to proliferate, as did specialty companies, each company devoting itself to some special area of manufacture, distribution, or customer service.

Computers continue to dwindle to increasingly convenient sizes for use in offices, schools, and homes. Programming productivity has not increased as rapidly, and as a result software has become the major cost of many systems. New programming techniques such as object-oriented programming, however, have been developed to help alleviate this problem. The computer field as a whole continues to experience tremendous growth. As computer and telecommunications technologies continue to integrate, computer networking, computer mail, and electronic publishing are just a few of the applications that have matured in recent years. The most phenomenal growth has been in the development of the Internet, with all its attendant ramifications.



   Digital Encoding and Processing

In order to process numbers and data electronically it is necessary to represent information as electrical quantities. To represent the ten digits of the familiar decimal number system, one might choose a set of ten electrical values and assign one value to each of the ten digits. While this arrangement is straightforward, it is not employed in computers, because the broad range of values needed makes practical circuits impossible to build. In addition, when characters other than numbers are included in the list of items to be processed, the increased number of distinct values becomes unworkable.

To solve the problem, all data is coded as binary numbers. The most reliable distinction that can be realized in electrical systems occurs when only two possible values exist. A lightbulb that may be either on or off is an example; the two possibilities are distinct and unmistakable. The two binary values zero and one are used to represent the electrical ideas off and on. These individual digits are usually referred to as bits. A way of extending the set of possible representations beyond two is also required. If a string of zeros and ones is allowed to represent a digit or character, then the number of possible representations becomes the value of two to the power of the number of bits. For example, if four bits are used, then there are 2(4), or sixteen, possible four-bit sequences that can be built. The set of sequences is as follows: 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111. This set can, of course, be used to represent sixteen characters and digits rather than only ten. If six-bit sequences are used, then sixty-four possible characters and digits can be represented. This binary coding of items is the principal means for representing all data in electronic computers. Many different lengths of bit sequences are in use. Some common lengths are four, six, and eight. Typically, the ten digits of decimal arithmetic are represented by the first ten sequences in the four-bit strings listed above. This is called the binary-coded-decimal representation.

Inside the computer, electronic on and off states are realized using basic logic units called gates. Ordinary light switches are observable examples of electronic gates. As the required operations of a computer became more complex, switches were developed that have a variety of ways in which they can be turned on or off. In order to systematically describe these ways, two elementary functions are defined. These are the AND function and the OR function, which operate in the following manners: the result of the AND function with any number of binary values is truth if all the values are true; otherwise, it is false. Generally, a one corresponds to a true value, and a zero corresponds to a false value. The result of the OR function with any number of binary values is truth if any one (or more) of the values is true. By applying these two functions along with the inverse function, which takes any value and produces the opposite value, one can describe any required activity in digital processing. The logical functions AND and OR are readily seen to provide for decisions, such as: do A if B AND (NOT C) are true. Arithmetic can also be described in these logic terms. For example, addition of two binary digits, A and B, produces a sum term, S, and a carry term, C, according to the following relationships: S = A AND (NOT B) OR (NOT A) AND B, and C + A AND B. Mathematics of this kind is called Boolean algebra.

In modern electronic computers the transistor is the device that acts as a switch. When computers using transistors were first built, the size of each transistor was about 1/8 square-inch. Today, hundreds of transistors can reside in a comparable space when integrated in a semiconductor chip (see integrated circuit). The technologies and processes that are used to make microscopic integrated circuits--such as masking, etching, and epitaxy--are themselves made possible by computers (see computer-aided design and computer-aided manufacturing). These technologies take advantage of the unique properties of silicon to create not only transistors, but also complex conducting pathways and other elements within single, small chips.

   Components of a Digital Computer

Any digital computer contains four basic elements: an arithmetic and logic unit, a memory unit, a control unit, and input-output units. Because computers are now used for all sorts of purposes, ranging from calculating the route of a spacecraft to controlling a washing machine, the contents of each of the basic elements vary greatly. Each element must be present, however.

The arithmetic and logic unit is that part of the computer where data values are manipulated and calculations performed. This section of the computer usually contains numerous registers and paths between these registers. Registers are collections of memory devices that can save particular values. For example, when numbers are to be added, they must be present at a physical location in the computer where the addition is to take place. The register can accommodate this. A circuit then uses the contents of the register in determining the sum. The idea is identical to the manner in which one would add two numbers on a piece of paper.

 In a typical application a computer performs millions of calculations every second. It is impossible to keep all values needed in registers at every moment, so that calculational speed becomes a factor in determining a computer's working capacity. Mathematical functions other than addition may be built into an arithmetic and logic unit. These include subtraction, multiplication, and division.

Not all computers are built to perform calculations with values. Some are designed to sort out lists of items or select items having a certain property. For example, a library may have its entire card catalog stored in a computer. When a borrower is seeking a particular title, the computer is given the task of searching the library booklist and comparing the desired title with the list. This is not an arithmetic problem but a logic problem. Logic problems involve examining values for certain properties and making decisions based on those properties. All logic problems can be described as a collection of AND, OR, and inverse (NOT) functions.

Because all the operands needed for execution of arithmetic and logic functions cannot be stored in registers, another means is provided: the memory unit (see computer memory). The memory unit stores data that is not currently being processed. The operation of a computer requires a list of procedural instructions, which are also stored in the memory. There are two types of memory: primary memory, which stores data and instructions that are used most often, and secondary memory, which stores related information that is used less often. Secondary memory will typically store a large batch of data that a program in primary memory will evaluate.

The process of summoning content from the memory is referred to as a fetch operation. The process of saving a value in memory is called a store, or sometimes write, operation. When contents stored in memory are needed often, as in the case of procedural instructions, the computer must fetch the information quickly and not necessarily in sequential order. Primary memory is employed for this task. The contents of certain segments of primary memory can be replaced during execution of a program if data that is needed is stored in secondary memory.

Secondary memory is sometimes referred to as bulk memory. When information stored in the secondary memory is to be used, the computer usually must fetch much more than the specific data needed. For example, the names, heights, weights, ages, grades, and other data for a class of students might be stored in secondary memory. In order to determine the average weight of the members of the class, the computer would fetch all the information into primary memory. It would then follow instructions for extracting the weight of each member. Finally, an average would be calculated using the arithmetic and logic unit. Secondary memory is ordinarily stored on magnetic tapes or disks and segmented into files.

The process of getting information into and out of the computer is handled by an input-output unit. Input-output devices bridge the gap between data in the form used by the computer and data in the form used with a particular access device. A computer keyboard is such a device; it is a palette of characters including letters, numbers, punctuation marks, and special terms. The computer processor interprets only strings of zeros and ones, so that the keyboard must make the conversion from typed-in characters to binary sequences.

It is also the job of an input-output unit to manage problems of timing. For example, the rates at which typists can press keys varies greatly. Also, it is wasteful for the computer to wait for all the necessary characters to be entered before beginning a processing sequence, and input-output devices can alleviate this problem. Similar timing problems arise when the computer has completed operations and then must display results. Most often this is done with printers and video display terminals. Many times the results are transmitted to another computer. At certain times during the operations of a computer there may be several different input and output transactions going on simultaneously. Some of the burden of managing this activity belongs to the input-output units themselves, although overall direction is managed by the control unit.

Each of the computer parts described so far--arithmetic and logic, memory, and input-output--is able to perform its own functions and communicate results. For these parts to work together effectively, however, it is necessary to have a control unit that coordinates the actions. To perform this job, a time frame of reference is established by the control unit. Generally, time within a computer is divided into moments whose length is determined by a basic rate at which the components in the control unit can react. This rate is fixed by a precision clock. Because all parts of the computer are not able to act at the same rate, longer periods of time are also developed, based on fractions of the fixed rate. By designing the computer so that every activity is related to the clock source, events become predictable, accountable, and easy to coordinate.

The control unit initiates an operation by first fetching an instruction from a list of instructions, called the program. The program is stored in the primary memory. Each instruction is an exact description of how the hardware units are to respond at a given moment in the time scheme of the computer. An illustration of a program is given by a recipe for making a cake. In addition to a list of ingredients, the recipe contains a step-by-step description of how to manipulate the ingredients in order to produce the cake. Similarly, the control unit of a computer is made to proceed through a list of directions describing how to manipulate certain data. A simple computer is able to perform only one task at a time. More complex computers have the ability to accomplish several tasks with one instruction. Regardless of the level of complexity, the control unit acts as an executive that provides each part of the computer with the information needed to perform its function, monitor its progress, and determine what to do next. The arithmetic and logic unit, control unit, and primary memory constitute what is usually called the central processing unit.

   Computer Operation and Programming

As has been said, all computers require a program, or list of instructions, to guide their activity. Sometimes the program is designed, or resides, within the hardware of the computer and cannot be changed without redesigning the hardware. More often, the program is entered as software into memory and may be easily removed or altered. In fact, computers that do not have a hardware program usually have several programs available in the memory at the same time. Some of these programs are employed in the general operation of the computer--that is, they control the executive functions. These programs are part of what is referred to as the operating system.

Modern computers actually have two sections to the operating system. The first and most primitive section usually is stored in a permanent memory in the hardware. This portion of the system provides setup and connections among basic computer elements, so that more general programs can be entered from a keyboard or loaded from secondary memory. In today's personal computers this primitive operating system is the BIOS (basic input/output system) that comes with the hardware. The second portion of the system is located in secondary storage for execution when required. These more complex systems, such as DOS and UNIX, perform a wide variety of file-handling tasks using a very structured command set. Yet another layer of operating system uses graphics rather than typed commands. Examples are Windows and Apple products. All these levels have the common goal of making the machine elements interact for the purpose of transferring data.

Other programs are written by individual users for specific purposes, such as calculating the payroll for a company, playing video games, balancing checkbooks, editing texts, and so on. These are called user programs (see computer programming). Although an operating system is necessary for a computer to function at all, user programs accomplish the specific goals for which the computer is employed.

Processor elements interact in a way that is largely determined by the hardware design, and they are controlled by operating systems, of which there may be many suitable kinds. The operation of secondary memory and a variety of input- output devices, however, introduces requirements that reduce the number of suitable operating systems. An operating system must be chosen so that it can manage the interactions of particular types of keyboards, modems, disk drives, printers, video output systems, and so on.

Secondary memories that use magnetic tapes have information stored in sequence along the tape. In order to gain access to specific data, the tape must be moved and searched until the desired portion is found. This takes a great deal of time. Magnetic disks, although more expensive than tape, store information in concentric rings that can be searched more quickly by scanning in a radial direction. These differences in access time and organization of contents require that different types of operating systems be applied to tape and disk systems. Similar considerations are made for the input-output units. The dominant factor in the design of operating systems, however, is the interaction with memory.

Computer programs are referred to as either software (the general term) or, sometimes, firmware. Both are a set of instructions that reside in memory for execution. Programs are called firmware when the instructions are located in a ROM (read-only memory), which is unalterable during operation. The BIOS of a machine is firmware. Instructions executed from a RAM (random access memory) are called software; this constitutes most of today's programs. Programs are written for a number of different levels within the computer and in a number of different programming languages (see computer languages). A computer is capable of performing a particular function once given a signal, and there are often several ways in which it can perform the function. Therefore it must be further instructed to use a certain method. An enumeration of the functions of a computer, along with its methods for performing the functions, is called the instruction set of the computer.

The instruction set can be viewed from the programmer's perspective or the machine's perspective. For the machine, any instructions must be encoded in terms of ones and zeros. From the programmer's perspective, pages filled with ones and zeros are tedious and difficult to interpret. For this reason acronyms are assigned to each instruction in the set, making them more readable. As an example, adding two numbers that are stored in two registers might be given the label ADD A, B. The language of ones and zeros is called machine language. The language that uses labels to simplify matters is called assembly language . The process of converting assembly language into machine language is called assembling. Every program must eventually be converted into machine language in order to be executed.

Assembly language, although much easier to deal with than machine language, is nevertheless difficult to use, especially in large and complex instruction sets. Furthermore, assembly-language programs cannot be used on different computers. Both of these problems are solved with the use of high-level languages. Instructions in high-level languages are given in terms that are more readily understandable than those of assembly-language programs, and such high-level-language instructions are relatively independent of the particular computer on which they run. A high-level instruction can be broken down into several assembly-level instructions. When this process is accomplished by a computer it is called compiling. A single high-level language will have a different compiler for each kind of computer on which the language is used. Some examples of common high-level languages are BASIC, C, and Pascal.

Successful programming requires that a task be broken down into methodical steps, or, in other words, an algorithm, that can be understood not only by the computer, but also by other programmers. After a program is written, it must be checked thoroughly in order to remove errors. This process is often as time-consuming as the program writing.

The difficulties that are most frequently encountered with programs are of two types: logic errors and programming errors. The use of an incorrect series of steps in the design of an algorithm is called a logic error. Incorrect use of the programming language is called a programming error. The process of locating these errors is called debugging. It is an arduous task, but it is crucial, because the ultimate performance of a computer is entirely dependent on the strict logic of its programs.

   Computer Applications

The direct or indirect influence of computers is now nearly universal. Computers are used in applications as diverse as running a farm, diagnosing a disease, and designing, constructing, and launching a space vehicle. Science is a field in which computers have been widely applied from the start. Because the development of computers has been largely the work of scientists, it is natural that a large body of computer applications serves the scientist. In order to solve scientific problems it is inevitable that researchers must deal with the language of science: mathematics. In attempting to understand more deeply complex natural phenomena, the scientist must use mathematical relationships that become increasingly difficult, as well as data that becomes more voluminous. It would be impossible to manage many of the studies of complex scientific phenomena without the aid of computers.

Many scientific computer programs inevitably serve the entire population. An area in which this can be seen and which has experienced a steady growth in computer technology is farming. When computers are now used to analyze data concerning the feed intake, size, and food content of farm animals, the benefits of such analyses eventually trickle down to many people, mainly because of efficiencies in production that result.

The improved accuracy of weather forecasting is another example of more powerful computer programs. Not only do computers help forecast the weather, but by being able to analyze larger and larger amounts of data, meteorologists are able to add to the understanding of the science of weather. Computers also make possible the now familiar satellite pictures of weather systems. The technology required to place satellites in orbit is also afforded by large-scale computers. Of course, there is still a long way to go before weather is predicted with great accuracy, but it is expected that future generations of supercomputers, using techniques such as parallel processing, will accomplish this goal.

Businesses now use computers extensively and on a worldwide basis. A well-known example is the banking industry, which is almost entirely dependent on computers. Automated bank tellers are now ubiquitous and are little more than input-output devices for a bank's computer. They are also an example of the powerful system called computer networking (see computer networks), in which computers, databases, and input-output devices are connected by means of wire, fiber optic cable, or satellite transmission, sometimes over great distances. The banking business is typical of many businesses today. The problems of record keeping and availability of information are similar in all types of businesses, and the computer is the perfect tool for dealing with such concerns.

A relatively new area for computers is that of communications (see telecommunications). Communications consist of the flow and control of information. This is part of what a computer does as it manages the data moving among the elements within itself. By expanding the concept of a computer to include networks of input-output devices rather than a single, complete device, the result is a communications system. If the memory unit and arithmetic and logic unit of a computer are both relatively small but control many input-output devices, then the computer will act more like a message-handling system than a computational device (see electronic mail). Gains in such areas as voice recognition, speech synthesis, and computer-networking software point to an important future for computers in communications, especially as network systems offer expanding access to the so-called information superhighway (see Internet).

Small, powerful, and low-cost computers for the home have been made possible by progress in microelectronics (see microcomputer), enabling desktop machines to perform many of the functions of larger computers. Initially used in home applications such as video games and record keeping, by the late 1970s personal computers were proving useful in business and education as well. The development of more powerful microprocessors and advances in computer networks in the mid-to-late 1980s and early 1990s enhanced the power of personal computers so much that they are now widely used even in large corporations. (See computer, personal; computers in education.)

An important application of personal computers is desktop publishing (see publishing, desktop). In this growing technology software programs and inexpensive printers are used to produce text and graphics that are camera ready for publication. Sitting at a single terminal, a user can write and edit text, produce such graphics as charts or drawings, lay out text and graphic elements, and store the results in memory. The results can then be printed out or sent electronically to a typesetter. Desktop publishing allows individuals to produce high-quality printed matter inexpensively.

   Modern Concerns

Researchers seek new ways to build better computers. The goals of their efforts are usually in one or more of the following areas: reducing costs, increasing processing speeds, increasing capabilities, and making computers easier to use. This last quality--ease of use--is commonly referred to as "friendliness." Sometimes improvements involve new devices. At other times they are brought about by new methods of integrating hardware or software elements.

Memory, both primary and secondary, is one part of the computer that has received considerable attention over the years. Originally, the memory unit of any computer was an array of small iron rings that could each be magnetized with either of two polarities. The resulting process was slow, bulky, and expensive. Since then, semiconductor chips have become the mainstays of primary memories, with magnetic tapes and disks handling secondary-memory storage. Other phenomena continue to be experimented with as possible forms of memory technologies. These include magnetic bubble devices, electron tunneling devices, and the compact disc. In the area of magnetic storage, considerable effort has been applied to find ways of storing information more densely. As a result, at the present time the cost per bit of disk storage approximately halves each year. Gigabytes (see byte) of reliable tape storage are available in inexpensive formats for home use.

Progress in semiconductor technologies continues, producing increased processing speeds and the fitting of more circuitry into less space. Very large-scale integration (VLSI), the integration of hundreds of thousands of circuits on a silicon wafer, was achieved by the late 1980s. The products of advances in semiconductors give designers the freedom to build functions into hardware that previously had to be provided by software, and computers gain both speed and versatility.

The use of optical means to store information is attractive primarily because the inherent high frequency of light implies that it should provide high densities. On the other hand, the human eye is more tolerant of informational errors than is a computer. For this reason, as well as the difficulty of creating a material that can be written on repeatedly using laser light, the appearance of optical storage media began slowly. Optical media that can be repeatedly rewritten were becoming available in the 1990s, however, and are expected to become an inexpensive commodity by late in the decade. Meanwhile the consumer use of compact discs has driven the cost of read-only discs (CD-ROMs) so low that they are rapidly becoming the preferred memory for software distribution.

Other laser-optical technologies are being developed, however, with optical fibers already used to transmit information in many networks. The use of optical methods in actual computer processing is still in the early stages of development but offers the hope of very fast and efficient computers for the future. One day computers may have, in addition to optical memories, optical processors (see optical computing).

Another area of experimentation is in the organization of computer parts. Most memory is organized so that a location is given an address, and contents are found by locating that address. Content-addressable memory, CAM, is a newer arrangement style, in which information is located according to its value content. With this method a computer can search for one item in a group in order to quickly find the whole group. As an example, if the text of this article were stored in a CAM, the task of finding a certain sentence would be made easier if the computer could search for one particular phrase. Content-addressable memories are playing a role in attempts to model the brain's capabilities. Data flow machines are a new type of processing unit in which calculations are performed when all the arguments of the calculation are present. In this way, even the time to fetch an argument or wait for a previous calculation is used to do something.

Another change in computer organization--one that is now used in a growing percentage of computers--is the use of fewer instructions in order to maximize processing speeds. This is the basis of so-called reduced instruction set computers, referred to as RISC computers. As computers find their way into various uses, architectures are developed that enhance application effectiveness. An application such as speech compression for use in the cellular phone industry is now done on a special-purpose computer that is a single integrated circuit called a digital signal processor (DSP). Its program is entirely self-contained as firmware in the processor.

A significant amount of interest exists in the field of artificial intelligence. The technologies and benefits that will derive from this area of study will undoubtedly filter down to all areas of computer science. Much work in artificial-intelligence research involves programs built to perform in ways similar to the way in which humans think. An example is the strategy employed in games programs, in which the computer keeps track of all possible responses, both winning and losing, and then builds a decision path that reinforces winning and deters losing. To an extent this is an algorithm for learning. Despite certain advances in artificial intelligence, computers can still do no more than their programs instruct them to do. The greatest commercial successes in this field have come with expert systems--huge database systems that act like expert consultants in such fields as medicine and chemical analysis. Parallel processing, in which computers break instructions down into smaller instructions to be executed simultaneously, is playing a large role in artificial-intelligence research due to the great computing speeds. Neural networks, which consist of layers of weighted sums of various input signals, are a practical form of computing architecture being used to solve more intuitive problems such as pattern recognition. A weighted sum is the addition of numbers that are each multiplied by some value.




Computer crime is generally defined as any crime accomplished through special knowledge of computer technology. Increasing instances of white-collar crime involve computers as more businesses automate and information becomes an important asset. Computers are objects of crime when they or their contents are damaged, as when terrorists attack computer centers with explosives or gasoline, or when a computer virus--a program capable of altering or erasing computer memory--is introduced into a computer system. As subjects of crime, computers represent the electronic environment in which frauds are programmed and executed. An example is the transfer of money balances in accounts to perpetrators' accounts for withdrawal. Computers are instruments of crime when used to plan or control such criminal acts as complex embezzlements or tax-evasion schemes over long periods of time, or when a computer operator uses a computer to steal valuable information from an employer.

Variety and Extent

Computers have been used for most kinds of crime, including fraud, theft, larceny, embezzlement, burglary, sabotage, espionage, murder, and desktop forgery, since the first cases were reported in 1958. One study of 1,500 computer crimes established that most of them were committed by trusted computer users within businesses--persons with the requisite skills, knowledge, access, and resources. Much of known computer crime has consisted of entering false data into computers, which is simpler and safer than the complex process of writing a program to change data already in the computer. Organized professional criminals, of course, have been attacking and using computer systems as they find their old activities and environments being automated.

With the ability of personal computers to manipulate information and access computers by telephone, increasing numbers of crimes--mostly simple but costly electronic trespassing, copyrighted-information piracy (especially software piracy; see computer software), and vandalism--have been perpetrated by computer hobbyists, known as "hackers," who display a high level of technical expertise. In addition, as computer networks expand, the occasional aggressively bad behavior of some users toward others in the network--including obscenity and threats--has become a matter of increasing concern.

There are no full statistics about the extent of computer crime. Victims often resist reporting suspected cases, because they can lose more from the embarrassment, lost reputation, litigation, and other consequential losses than from the acts themselves. Evidence indicates, however, that the number of cases is rising each year, because of the increasing number of computers in business applications where crime has traditionally occurred. The largest recorded crimes involving insurance, banking, product inventories, and securities have resulted in losses of tens of millions to billions of dollars--all facilitated by computers.

Remedies and Law Enforcement

The number of business crimes of all types is probably decreasing as a direct result of increasing automation. When a business activity is carried out with computer and communication systems, data are better protected against modification, destruction, disclosure, misappropriation, misrepresentation, denial of use, misplacement, unauthorized use, and contamination. Computers impose a discipline on information workers and facilitate use of almost-perfect automated controls that were never possible when these had to be applied by the workers themselves under management edict. For example, a control in a computer to detect all transactions above a certain amount and flag them for later audit works perfectly every time. Computer hardware and software manufacturers are also designing computer systems and programs that are more resistant to tampering. In addition, U.S. legislation, both federal and state, includes laws concerning privacy (see computers and privacy), credit card fraud, and racketeering. Such laws provide criminal-justice agencies with tools to fight business crime.



The beginnings of the computer industry, from the first conception of such devices on through World War II, are described at length in the opening section of the computer article. Since the end of that war, the computer industry has grown into one of the biggest and most profitable industries in the United States. It now comprises thousands of companies, making everything from multimillion-dollar high-speed supercomputers to printout paper and floppy disks. It employs millions of people and generates tens of billions of dollars in sales every year.

In 1946, John W. Mauchly, a physicist at the Moore School of Engineering of the University of Pennsylvania, and John Presper Eckert, Jr., the engineer who had supervised the design and construction of the first giant digital electronic calculator, ENIAC (Electronic Numerical Integrator and Computer), left the Moore School and established the Electronic Control Company, later rechristened the Eckert-Mauchly Computer Corporation. America's first computer company, it embarked upon a highly innovative project: the development of a general-purpose computer system for science, business, and government. In 1950, with their company short of cash, Eckert and Mauchly sold out to Remington Rand, a highly diversified corporation. Drawing on Rand's substantial financial resources, they finally completed their project. The first UNIVAC (Universal Automatic Computer) was delivered to the Census Bureau in March 1951.

At the time the International Business Machines Corporation (IBM) dominated the tabulator business and for a while had shown no real interest in computers. Its president, Thomas J. Watson, however, appreciated the value of good publicity. In 1939, Howard Aiken, an engineering professor at Harvard University, approached Watson with an idea for building a huge electromechanical calculator. Watson funded the project, and IBM built the Mark I, donating it, with fanfare, to Harvard in 1943. IBM then went on to build a much more sophisticated electromechanical computer, the SSEC (Selective Sequence Electronic Calculator), installing it in a Manhattan showroom in 1948. Then, having noted the success of UNIVAC and finally realizing that there was a sizable market for computers after all, IBM undertook a crash program to build a computer system of its own. The first machine, called the IBM 701, rolled off the assembly line in 1953. Although IBM was a latecomer to the computer business, its superior reputation, ambition, financial resources, and marketing skills gradually lifted it above its competitors. In 1964, IBM consolidated its position with the introduction of the enormously successful System/360, the first compatible family of computers.

The first computers were made with vacuum tubes; by the late 1950s, computers were being made out of transistors, which were much smaller, less expensive, more reliable, and more efficient. In 1959, Robert Noyce, a physicist, and Jack Kilby, an electrical engineer, separately invented the integrated circuit, a tiny chip of silicon that contained an entire electronic circuit. The area in and around Mountain View, Calif. (between San Francisco and San Jose), became the center of the integrated circuit industry and is now referred to as Silicon Valley (see computer industry).

The invention of the integrated circuit led to the development of small, rugged, efficient, and relatively inexpensive minicomputers. First produced by the Digital Equipment Corporation in 1963, they were also later produced by the Data General Corporation and other firms. Unlike supercomputers and mainframes, Digital's compact machines could be installed almost anywhere, whether in a submarine, a laboratory, a bank branch, or a factory.

In 1971, Marcian E. Hoff, Jr., an engineer at the Intel Corporation, located in Silicon Valley, invented the microprocessor, and another stage in the development of the computer began. The microprocessor was a central processor on a chip, and it enabled computer designers to replace dozens of integrated circuits with a single chip--thereby further shrinking the size and cost of computers. This paved the way for the development of personal computers (see computer, personal).

The first widely used personal computer was introduced in 1975 by Microinstrumentation and Telemetry Systems (MITS), a small electronics firm. Called the Altair 8800, it used an Intel microprocessor and was offered as a $399 do-it-yourself kit. Other companies, such as Apple, Kaypro, and Morrow, soon introduced their own versions. The personal computer industry has come a long way in a very short time. The market for personal computers rose to more than $70 billion worldwide by the early 1990s, and there was a growing demand for personal computer hardware (modems, monitors, printers) and personal computer software such as spreadsheets, word processing, desktop publishing (see publishing, desktop), and instructional programs. This gave rise to dozens of ancillary industries while forcing computer giants, most notably IBM, to scale down their enterprises severely.

The importance of the personal computer cannot be overestimated. At first only microprocessor hardware and limited software--such as the assemblers needed to build user application programs--were available. Also, because the machines were difficult for the average person to use, they remained in the hands of a relatively small number of home and office users for some years. Throughout the 1980s, however, the microprocessor industry was creating new integrated circuits many times faster and more capable than previous versions. (By the early 1990s, the power of the IBM 360 could be bought in integrated-circuit form for about $100.) It soon became clear that the key to this great market was software.

Software, which had been the province of the giant companies, now began to diversify greatly. The revolution thus initiated in the computer industry is most notably exemplified by Bill Gates and his Microsoft company, founded in 1975. In addition, in the later 1970s, a group in Silicon Valley led by Steve Jobs and Steve Wozniak, deciding that computer responses needed to be made more "user-friendly," founded the already-mentioned Apple company and, with it, the first graphic user interface for computers. This concept removed the mystique from computers and made them household items, much like television. Taking the Apple concept, Microsoft in the later 1980s created the Windows operating system as a graphic platform for all sorts of user-application programs, opening up the writing of software to companies of all sizes. By 1995 the Windows system was installed on the vast majority of personal computers, propelling Microsoft to the forefront of the software industry. Conversely, the manufacture of computer parts spread out among numerous companies, creating an extremely competitive hardware environment.

The explosive growth of the Internet during the mid-1990s has fueled speculation that the next big growth area for the computer industry would involve computer network hardware and software. The technical challeges of providing ease of access to the world's online services have been solved, but controlling access to and garnering revenue from online data have proved elusive tasks for most companies. Meanwhile, the media, telecommunications, computer, and cable industries have sought to combine their assets and expertise in an effort to corner the multimedia marketplace.



The central processing unit (CPU) of a computer executes elementary instructions, and many such operations are required to complete useful tasks. The power of the computer lies in the rapidity with which it executes these instructions. A program listing all the elementary instructions needed to perform a complex task would be long and difficult to write. Fortunately, elementary instructions can be grouped into commonly used sequences for common tasks such as standard arithmetic operations and mathematical functions using decimal numbers. In the early days of electronic computers it was recognized that the computer itself could be used to translate powerful instructions automatically into sequences of elementary instructions. Thus the concept of computer languages was born.

   Machine and Assembly Languages

A CPU operates by responding to electrical signals. Whether voltage is present or absent on a particular wire can be represented by the binary digits zero and one. Machine-language programs are composed of long strings of such Binary numbers. Assembly language is a step up from machine language. The programmer writes down simplified names of instructions, such as ADD or SUB(tract), and an assembler program translates a list of such instructions into the machine-language program--a list of binary numbers. Machine and assembly languages are called low-level languages; their forms are determined by the design of the CPU. A low-level program written for one type of CPU is very difficult to translate into one that can be executed on another type of computer.

   High-Level Languages

Computer programmers need to express problems in a form that is independent of the design of the CPU, using the vocabulary of human language. They also prefer not to specify every detail of an operation each time it is needed. For such reasons, high-level, or symbolic, computer languages have been developed. With a high-level language a user can obtain the sum of two numbers by giving the computer a command such as "PRINT 512 + 637." For this to happen, high-level languages must be translated into low-level languages. This is accomplished, within the computer, by either a compiler or an interpreter.

A compiler translates a source program into machine language. An interpreter program reads individual words of a source program and immediately executes corresponding machine-language segments. Interpretation occurs each time the program is used. Thus, once it has been compiled, a program written into a compiled language will run more quickly than a program in an interpreted language.

Writing a program to be interpreted is usually easier than producing a compiled program. However, fast computers with large amounts of computer memory make possible compilers that are fast and easy to use. The computer language called BASIC was once implemented only interpretively. It is now available in sophisticated versions that allow interpretive execution of simple instructions during program development yet produce fast compiled machine-language output for rapid execution of large programs. Compilers that make development and testing of programs almost as easy as with an interpreter are also now available for languages usually compiled, such as C and its improved version C + + and Pascal. These are probably the most widely used languages for developing computer software for small and medium-size computers.

On large computers used in offices and industry, programs are generally used many times after they have been written, and compiled languages are used almost exclusively. In addition to the languages mentioned above, Ada and older languages such as COBOL are used in these environments.

   Elements of Programming Languages

Modern structured programming languages use control structures, named procedures, and local variables. Instructions are ordinarily executed one after another, in the order that they appear in the program. Control structures change this order of execution, causing repetition or conditional execution of parts of a program. Examples are FOR...NEXT, IF...THEN...ELSE, WHILE...REPEAT, and DO...UNTIL. Named procedures are program parts written as separate subprograms and invoked by name whenever they are required in a program. This makes a main program easier to understand. In addition, libraries of such prewritten procedures can be shared. Local variables prevent unexpected and unwanted interactions between parts of a program. They are particularly important when different parts of a program are written by different programmers.

The importance of these features can be seen by comparing modern languages to early versions of BASIC. BASIC relied heavily for control upon such instructions as the GOTO instruction. These make programs very difficult to understand, because an instruction such as GOTO 1500 does not indicate to someone reading the program what operations are performed at line 1500. Similarly, BASIC's method of dealing with subprograms was with a CALL instruction. A line such as CALL 2000 is as hard to understand as a GOTO, and for the same reasons. Finally, in old versions of BASIC, all variables were global, which meant that changing the value of a variable named X in an obscure subroutine would also change the values of any Xs anywhere in the programs. These considerations do not seriously handicap BASIC for small programs, but large programs are very difficult to write without using more sophisticated techniques.

Although the symbols, words, and styles of different programming languages appear very different, most languages share many functional features. An example of this is a loop procedure, used to control repetitive tasks. The following segment of a program for determining a payroll, written in BASIC, illustrates a loop mechanism:


   200 INPUT "How many employees"; N

   210 FOR I = 1 TO N

   220 PRINT "Employee number"; I

   230 GOSUB 800; REM Subroutine to calculate pay

   240 NEXT I.

The user responds to the INPUT statement by entering a number, which becomes the value of variable N. Then the FOR and NEXT instructions cause the computer repeatedly to invoke the subroutine that calculates the pay until the loop has been repeated N times.


The first electronic digital computers were programmed in machine language, but assembly languages were then developed. In 1956 the first widely used high-level language was introduced. Called FORTRAN (from FORmula TRANslator), it was designed for dealing with the complicated calculations of scientists and engineers. COBOL (from COmmon Business Oriented Language) was introduced soon after and was designed for business data processing. ALGOL (1960, for ALGOrithmic Language) was designed as a tool for computer scientists to use for finding solutions to mathematical or programming problems. LISP (from LISt Processor) was also developed in the late 1950s. In particular, LISP was designed for working on problems of artificial intelligence, as in attempts to make computers translate human languages.

The confusion of many languages led to an attempt in the 1960s to produce a language that could serve both the business and the scientific-engineering communities. This project produced the language PL/1 (from Programming Language One). Newer languages also continued to emerge. BASIC (from Beginner's All-purpose Symbolic Instruction Code) was developed in the 1960s to give computer novices a readily understandable programming tool. This was a time when time-sharing operating systems were making computers more available, particularly in secondary schools and colleges. APL (from A Programming Language) was also developed for time-sharing systems, but in this case the goal was to provide a very powerful language for sophisticated mathematical and scientific calculations.

   Newer Languages

In the 1970s a number of new general-purpose computer languages emerged. Pascal, designed as a teaching language and to encourage good programming habits in students, has largely replaced ALGOL as the language used by computer scientists for the formal description of algorithms. The economical C language, similar to Pascal, allows the experienced programmer to write programs that make more efficient use of computer hardware. Extensions such as C + + incorporate features needed for object-oriented programming. The language Ada was commissioned by the U.S. Department of Defense. Like PL/1, it is meant to be a universal language and is complicated, but because its use is required in U.S. defense projects its industrial employment is assured.

A number of languages have been developed for specialized applications. These include FORTH, designed for use in scientific and industrial control and measurement applications, and Postscript, designed for controlling printers and other graphics output devices. LOGO and Scheme are both descended from LISP. LOGO was developed to help very young children learn about computers, and Scheme is used in university-level teaching of computer science. Japanese researchers recently chose a newer language, PROLOG (from PROgramming LOGic), which makes it convenient for programming logical processes and for making deductions automatically, and it is used for programming expert systems. Occam is capable of making effective use of parallel processing on large computers that have multiple CPUs simultaneously working on the same problem.



A digital computer memory is the component of a computer system that provides storage for the computer program instructions and for data. Internal, or primary, memory is an essential feature of computers. Many computer operations involve reading instructions from memory and executing them by reading data from memory, performing operations, and then writing results back into memory. Because there is room to store only a limited amount of information in the primary memory of a computer, permanent storage of large amounts of information must be accommodated by external, or secondary, memories such as magnetic tapes. (The subject of secondary memories is discussed in greater detail in information storage and retrieval.)


A primary memory consists of many storage locations, each of which is uniquely identified by an "address" number. To read from memory, the address of the desired information must be supplied to the memory along with a command to "read." The content of the memory is then produced as output. To write into memory, the address of the location and the data to be written must be supplied to the memory along with a "write" command. Thus a memory component has (as subcomponents) storage locations, data paths for moving information into and out of storage, and the control logic necessary to interpret commands.

Each read or write operation is called an access. Sequential access memories, such as magnetic disks or tape, are usually used for secondary storage. In order to move from one address to another in such memories, it is necessary to proceed sequentially through all locations between the two addresses--for example, by winding a tape. In random access memories (RAMs), on the other hand, all locations can be accessed directly, and equally rapidly, by electronic switching. RAMs are used in primary memory because they are much faster.

Memory units frequently read from but seldom or never written into, such as the control programs in hand calculators or programs that load the operating system into a computer when power is first applied, are normally constructed with read-only memories (ROMs). ROMs have permanent information placed in them during manufacture. Because a program written into a ROM cannot be changed, such programs are referred to as firmware. ROMs are also random access devices, but when reference is made to the "RAM" of a computer, normally it is not the ROM but just the writable RAM that is being discussed.

Programmable ROMs (PROMs) may be manufactured as standard units and then have information permanently implanted in them by specialized equipment. Erasable programmable ROMs (EPROMs) may have their programs erased and new information implanted from time to time. EPROMS that can be erased by ultraviolet light are used extensively in industry. Newer electrically erasable PROMS (EEPROMS) are now incorporated in some computers, to allow for firmware upgrading without replacing built-in circuitry.


The size of a computer memory refers to the amount of information that may be stored. The smallest unit of information in digital computer systems is the bit, or binary digit. This unit may have one of two values, 0 or 1, and is the basis of the binary number system. An addressable unit is the group of bits that constitutes the information in an addressable storage location. Common sizes for the addressable unit are 8, 16, 32, and 64 bits. The memory size is specified by the addressable unit size and by the number of addresses. Modern small computers (see computer, personal) can be equipped with up to 4 billion addressable locations, although most are initially equipped with smaller memories--typically 4 to 8 million addressable locations. Larger computers generally have even greater capacity.

The part of of a computer's central processing unit (CPU) that serves as temporary storage for data, addresses, and orders while they are being used is called the register. The rate of information transfer between the CPU and memory is determined by the memory cycle time and the path width, or number of bits moved in each cycle. This is frequently larger than a single addressable unit. Memory cycle time is the time required by the memory system to carry out a read or write operation. Cycle times have declined steadily since the introduction of random access memories (c.1950). By 1995, cycle times of 0.05 microseconds or less were common.


Until the 1970s most large primary memories used ferrite cores--rings of magnetized material about a millimeter in diameter, strung like beads on a wire grid. The direction of magnetization of each core in the memory determined the binary value it carried. Ferrite-core memories were "nonvolatile." That is, they retain their information even after power has been removed. Primary memory is still often called "core" memory, even though most primary memories now are made up of small integrated circuit chips, each of which, in the present state of technology, can hold up to four million bits of information. Such memories are "volatile"--their information is lost when power is removed--although standby battery power can be used to overcome this. They have replaced ferrite cores because of their great advantages in terms of speed, density of storage, power consumption, and cost.

The most widely used type is the DRAM, or dynamic RAM, in which information is stored electrically in arrays of tiny semiconductor capacitors. These can be either charged or uncharged, corresponding to binary values of 0 and 1. The electrical charges must be periodically recharged during operation. Another type, the static RAM, or SRAM, does not require constant "refreshing"but uses more circuitry and space. Specialized RAMs made with very-low-power complementary metal-oxide-silicon (CMOS) integrated circuits are frequently used in conjunction with small rechargeable batteries to maintain critical configuration information in computers when power is off. The next generation of RAMs may incorporate superconductive tunnel junctions that operate at speeds 10 to 100 times faster than present memories (see superconductivity; tunnel effect).

   Performance Improvement

Several design methods are available to improve primary memory performance. One technique is called interleaved memory. If two memory modules are built, and each can be accessed independently to provide instructions and data to the central processing unit, then the potential exists for transferring twice as much information in a given time. The full potential is never reached, but the idea is used to good advantage when odd memory addresses are placed in one module and even addresses in the other. Thus the name interleave refers to address interleaving. A second performance improvement method is the insertion of a higher-performance small memory between the primary memory and the central processing unit. This memory, called a cache, can be used to hold frequently referenced instructions or data. This reduces the number of slower primary memory accesses.

Virtual memory is the technique of temporarily storing some of the information in primary memory in a "swap" area on a secondary memory device. This was formerly used only in large computers, but fast hard-disk systems now allow it to be used even in personal computers. It enables a user to have the illusion of almost unlimited memory space, at the expense of occasional small delays as data that have been "swapped out" are retrieved from the disk. Modern operating systems need large amounts of memory to have multiple programs simultaneously active.



Computer modeling is the use of computers to model objects and to simulate processes. Computer simulations are valuable because they allow a person to study the response of a system to conditions that are not easily or safely applied in a real situation. With a computer model a process can be speeded up or slowed down. A model can also allow an observer to study how the functioning of an entire system can be altered by changing individual components of the system.

A computer model is usually defined in mathematical terms with a computer program (see computer programming). Mathematical equations are constructed that represent functional relationships within a system. When the program is running, the mathematical dynamics become analogous to dynamics of the real system. Results of the program are given in the form of data.

Another type of model involves a representation of an object (see computer graphics), which can be manipulated on a video display terminal in much the same way that a three-dimensional clay or wood model might be manipulated. This is the basis of computer-aided design (see computer-aided design and computer-aided manufacturing).

The success of computer models is highly dependent on the mathematical representations of systems and on chosen input parameters. For many systems, the mathematical representations must be extremely complex because there are so many factors present. Factors are often represented as submodels and interact with one another. Input parameters consist of conditions that are known at the beginning of a modeling sequence. They often have to be estimated.

The variety and sophistication of computer models have increased as computers have become more powerful. Models are now used to study economic growth, employment, energy and food resources, population, and housing needs on a world scale as well as on local levels. Many environmental systems have been modeled. The effect on soil and water of chemical or nuclear contamination can be evaluated with a computer. A model of a river can show how using water for dams, irrigation, and power plants will affect water flow at various points. Models can help in studying soil erosion and planning commercial use of forestland.

In the medical field, computer models are used to predict how molecules and drugs interact, speeding the development of new pharmaceuticals. Three-dimensional models of human organs are used to teach anatomy to biology and medical students, with the advantage that the student can manipulate the computer model like a real object as graphics and animation reveal otherwise hidden information. A neural network--a computer approximation of the brain's neural architecture--aids researchers in understanding brain functions. In engineering, most designs are developed and tested with computer models. With interactive computer-aided design, engineers redraw designs quickly and inexpensively, and the computer aid also allows the user to study the response of the product to factors such as physical stress, the effects of different materials on physical properties, and the effects of different designs on cost.

Spreadsheet programs are simple computer models that are widely applicable to business concerns. For example, they can be used to study how changes in levels of sales and prices affect profits. Educational models allow students to study structures and behaviors and to build reasoning and problem-solving skills. Thus students can learn to weigh social, economic, and political issues as they take on such roles as city mayor, nuclear plant operator, or even Mother Nature. Continued innovation on many fronts--including processing power, data storage, and video compression--will make computer models ever more useful for a wide range of applications. Developers can be expected to construct increasingly accurate models of weather phenomena, environmental trends, and other complex studies that involve huge numbers of variables.



Computer music is any music in which computers are used to transmit musical instructions to electronic instruments or live performers. The transmissions are in the form of electrical impulses, which are, in turn, reproduced as sounds.

Max V. Mathews, an electrical engineer, established the pioneering computer music project at Bell Laboratories, Murray Hill, N.J., in 1957. Intrigued by the relationship between number and tone in Arnold Schoenberg's twelve-tone piano music, Mathews began to work on computer music.

In the classic computer music studio, the following series of events (direct synthesis) occurs. These procedures are still used, though many others have become available to computer composers in the last 30 years. (1) The composer programs instructions into a computer in a language that it understands. This is usually done through a console (often an alphanumeric keyboard). Input media may include cards, paper tapes, magnetic tapes, and magnetic disks. (2) The instructions are converted to numbers. (3) The computer performs the functions that the composer has requested. (4) A digital-to-analog converter converts the resultant information to varying voltages. (5) These voltages drive one or more loudspeakers, thus creating sound (see electronic music).

Another compositional technique, analysis-based synthesis, is exemplified by Charles Dodge's In Celebration (1975). A spoken text is recorded digitally. The digitized speech information is analyzed, and the resultant information is used to recombine the speech sounds. Thus the computer both analyzes and synthesizes sounds. In yet another technique, acoustic sounds-- natural or human-made--are digitally recorded, then modified by the computer in a manner similar to tape manipulation in concrete music (musique concrete).

The growing sophistication of real-time ("live") computer performance techniques has freed computer music from unconditional bondage to the studio. For example, the popular 1983 invention called the MIDI (Musical Instrument Digital Interface) can expand the capacity of a personal computer to equal or surpass that of a professional studio system. Using the MIDI, information can be communicated between computers, electronic keyboards, synthesizers, and any other necessary modules for the generation of sound. Data to be communicated can include pitches, dynamic levels, timbres, and other elements common to musical performance.

Large computer music centers, however, remain important for both composition and research. Twenty years after the inception of the Bell Laboratories project, the Institut de Recherche et de Coordination Acoustique/Musique (IRCAM) of Pierre Boulez was inaugurated in Paris. Significant work in computerized music is also being done at many U.S. universities, including Princeton, Stanford, the University of Illinois (at Urbana), and the University of California (at San Diego). Some composers of computer music are Milton Babbitt, Herbert Brun, John Cage, Loran Carrier, John Chowning, Emmanuel Ghent, Gary Kendall, Dexter Morrill, Julia Morrison, Dika Newlin, Laurie Spiegel, Morton Subotnick, James Tenney, and Yannis Xenakis.



Computer networks are interconnections of many computers for the purpose of sharing resources. They allow communication between users through electronic mail and "bulletin boards," and they provide access to unique databases (see database). They can be thought of as information highways over which data are transported. They speed up processing and databasing in busy systems, reduce costs (as in eliminating paperwork), and offer many other conveniences. Networks are changing the computing paradigm from "number-crunching" to communicating. In turn they have spawned industries such as the online industry, a collection of organizations providing information and communication services to remote customers via a dial-up modem.

In a computer network the individual stations, called "nodes," may be computers, terminals, or communication units of various kinds. Networks that are contained within a building or small geographical area are called local-area networks, or LANs. They usually operate at relatively high speeds. The Ethernet, Token Ring, and FDDI (fiber distributed data interface; see fiber optics) are examples of transmission technologies often used in LANs. Larger networks, called wide-area networks, or WANs, use a variety of transmission media, such as telephone lines, to span states, countries, or the entire globe (see Internet).

Networks are designed and constructed in layers. Each layer is defined by a standard, called a protocol, that defines how information is organized and transmitted from one node to another. The lowest layers define how bits of data are packaged, while the highest layers define how the data are fed into an application running on a desktop or mainframe computer. There are two basic approaches to data-layer protocol design: packet-switched and circuit-switched. The packet-switched approach is most popular in LANs because of its reliability and simplicity. Perhaps the most widely known is the packet- switched transmission control protocol/Internet protocol (TCP/IP) used by the Internet.

Circuit-switched approaches have traditionally been used by telephone companies to implement WAN connections. This has been changing, however, as companies convert to digital communications compatible with computers. For example, the asynchronous transfer mode (ATM) protocol is a hybrid between circuit- and packet-switched methods. The ATM divides data into small packets called cells and then routes these cells over a virtual circuit, much like an ordinary telephone call. A virtual circuit is a point-to-point connection that may send data over different physical links during the communication session. The circuit is made "virtual" because the user never knows that the cells are routed over different links throughout the session. In either approach, one computer will not be able to communicate with another unless they use the same protocol. This problem has been addressed by vendors of devices--called bridges, routers, and hubs--that convert from one protocol to another. A bridge connects networks, while a router is a more "intelligent" bridge that can find nodes on the network as well. A hub is often a sophisticated computer that does conversions, changes transmission speeds, and routes data to a variety of nodes.

Nodes have telephone numbers that uniquely identify the location (in network geography) of a computer on the Internet. For example, the IP (Internet protocol) of a computer might be Because such numbers are difficult to remember, a naming convention has been invented by users. Names such as "" are automatically converted into an IP number by a name-server program. Here, "joe" is the name of the user, "mist" is the name of the computer, "ece" is the name of a department (electrical and compute



Computer programming is the process or activity of developing programs, or lists of instructions, that control the operation of a computer. Computer systems consist of hardware and software. Hardware comprises the physical and electronic parts of the computer, including computer memory. In contrast, computer software comprises the programs that reside in the memory and control each hardware component. Without a program, a computer is as useless as a bus without a driver.

A number of essential types of programs exist. operating system programs control the most fundamental operations, such as running an applications program and processing the user's input and output requests. They do much more, however. They control every aspect of the computer, from connecting to a network to interpreting what is wanted when a blank diskette is inserted into the computer's disk-drive device. Applications programs tailor the computer's powers to performing specific tasks such as computing payrolls, creating mechanical designs, and processing text. Word processors, spreadsheets, and graphics programs are all applications programs. Programmers write operating-system and application programs by encoding each instruction in a way that the computer can understand.

All programs must be expressed in a precise notation called a programming language (see computer languages). Programs for elementary processes are in low-level languages that are cumbersome and difficult for ordinary users to follow. Highlevel languages strike a compromise between the precise meanings required by the machine and the written language of the human programmer. High-level languages that are used to design applications programs include BASIC, often used for personal computer programs, and C and C + +, used for a wide range of programming tasks.

Programming may be broken down into stages: requirements definition, design specification, coding, testing, and maintenance. The requirements stage involves quantifying the necessary operations to be performed by the program. As an example, for a payroll program, requirements specify how many paychecks must be processed, what calculations need to be performed, and how the information managed by the computer system should be stored. In the design-specification stage, directions are provided for meeting the requirements by quantifying the processing steps and the data-storage structures in greater detail. For this an algorithm, or step-by -step procedure, is devised. Algorithms are mathematically precise recipes for how to carry out a process.

Coding is the stage in which the algorithms, data structures, and program design are turned into steps expressed in a chosen programming language. Particular care must be taken in this step to make certain the computer is given precise and correct (detailed) commands to carry out what the requirements demand. Because computers are not intelligent, very subtle errors can creep into a program and go undetected by users. This is such a major problem with programming that a special step, testing, is needed. Testing is the stage in which the program is verified as being correct with respect to the requirements and design specification. A number of testing methods are applied to catch a variety of errors. For example, a simple error would occur if the program attempts to divide by zero or input the incorrect data. More sophisticated errors are: incorrect calculations, attempts to process numbers too large for the machine's capacity, and performing steps in the wrong sequence.

After the program is tested and found to be correct, it is released to its users. The final stage is maintenance, in which enhancements and corrections are made. It is the most lengthy and costly stage of programming. To illustrate all these stages, consider the design of a program (at the end of this article) to find the sum of a list of real numbers.

Computer programming is a costly and time-consuming activity. Approaches to improve programmer productivity are always being pursued by computer scientists. These efforts include inventing higher-level or more powerful languages that require less effort to use; inventing utility programs that assist programmers by automating the process of requirement analysis, design specification, coding, testing, and maintenance; and inventing new methods of programming that reduce the intellectual effort needed to complete the phases of programming in a shorter time.

The single most important lesson learned about programming over recent decades is that early defect removal leads to higher programmer productivity. Early defect removal means uncovering defects in the design specification prior to coding. It costs much more to remove a defect after encoding. As a consequence, a number of technical and social processes have been invented to make early defect removal a part of the programming process. For example, languages that enforce strong type-checking on data possess a technical feature that leads to early defect removal. An example of a social process that reduces errors in the design step is "walk-through." In a code walk-through, a group of programmers read each line of code and discuss it, prior to entering it into the computer.

Because maintenance is the most expensive stage in programming, and change is inevitable, recent work has emphasized design, coding, and testing techniques that accommodate changes in the original program. In one technique, error, prompt, menu, and help messages are separated from the code, making it easier to change these messages. For example, the so-called resource file of applications written for Macintosh and Windows personal computers is where messages are separated from the logic of the application, thus reducing maintenance effort. An older technique, called structured programming, also reduces the cost of maintenance by dividing the program into understandable pieces. Object-oriented programming takes modularity one step beyond by dividing a program into units called objects. Object-oriented programming further reduces programming effort by sidestepping common errors and making it easier for programmers to reuse previously written objects. The less code that a programmer has to write, the less is the chance of error, and the greater is individual programmer productivity.

As the science of programming progresses, more and more of the steps will be automated. Thus the future programmer will spend more time on requirements analysis and less time on design, coding, testing, and maintenance. Many tools already exist for automatically generating a program from graphic descriptions or from very high-level directions.




The computer register is that part of a digital computer memory serving as temporary storage for data, addresses, and orders while they are actually being used. Sometimes the term is used to refer to any small-capacity memory device located in the central processing unit of a computer. The name is derived from mechanical apparatuses such as the cash register, which has manual data entry keys and levers. In modern electronic computers, if a number a is added with a number b to form result c, both a and b are put into registers Ra and Rb that directly connect to the adder, and c, when formed, is deposited directly by the adder into register Rc. A computer designed to operate on arithmetic quantities with a length of 32 binary digits would have registers constructed typically as a row of 32 binary memory cells equipped with suitable "gates" for loading and unloading their contents. During a step of computation, some registers also hold the coded instruction currently being enacted, as well as the address in main memory where the results of the current step are to be deposited and the address of the next instruction.



Computer systems are susceptible to various kinds of invasion and sabotage. Hardware and software may be infected and damaged by computer viruses in programs downloaded from computer bulletin boards, competitors may log onto a company's computer network and read confidential marketing plans, students may alter grades in school records, and so on.

Various steps can be taken to avoid unauthorized access to a computer system. A password program assigns a secret password or security code to each person authorized to use a system; the password or code must be typed in before access is granted. Additional passwords or codes can be assigned for access to specific files. Data-encryption programs scramble information in a file prior to storage or transmission; a special password or decoder is needed to translate the scrambled data back into its original form. Encryption has become a controversial issue: businesses and civil libertarians want to ensure that all communications remain private, but law-enforcement agencies want to have the ability--with court authorization--to tap into communications among criminals and people viewed as national-security threats. The solution, in the U.S. government's view, is a national encryption standard to which it or its representatives would hold the special code keys.



Computer software consists of the programs, or lists of instructions, that control the operation of a computer. The term can refer to all programs used with a certain computer, or it can refer to a single program (see computer programming).

Software is intangible information stored as electrical impulses in a computer memory, in contrast to the hardware components such as the central processing unit and input-output devices. These impulses are decoded by the hardware and interpreted as instructions, with each instruction guiding or controlling the hardware for a brief time. As an example, an ADD instruction of a program controls the hardware for the length of time needed to add two numbers and return the sum.

A wide variety of software is used in a computer system. An easy way to understand this variety is to think of it in layers. The lowest layer is nearest to the machine hardware. The highest layer is nearest to the human operator. Humans rarely interact with a computer at the lowest level, but instead use a language translator called a compiler to do the detailed work. A compiler is a software program whose purpose is to convert programs written in a high-level, or user, language into the low-level (binary) form that can be interpreted by the hardware (see computer languages). Compiler programs eliminate the tedious job of conversing with a computer in its own binary language. Interpreter programs perform a similar task.

Moving up a layer, an operating system is a software program that controls the computer system itself. It organizes hardware functions such as reading and writing input and output data (from a keyboard, screen, or disk-drive unit) to a screen, printer, or disk-drive unit; interpreting commands from the user; and performing housekeeping chores such as allocating time and resources to each application program.

Applications software adapts the computer to a special purpose such as processing a payroll or modeling a machine part. Applications are written in any of a variety of compiler language that are each appropriate for certain applications. These languages, inventions of the human mind, cannot be directly understood by the computer hardware. Therefore they must be translated by an appropriate compiler that converts them into the ones and zeros that the machine can process.

Applications software is as diverse as the applications of computers. It is generally divided into two groups: horizontal and vertical. A horizontal program can cut across many application areas. Examples are the spreadsheet and database management program. Spreadsheet programs can be used to develop business ledgers and financial models and to perform calculations in areas such as statistics and engineering. Vertical applications programs are tailored to specific tasks, such as medical billing, payroll for a certain business, or the design of an airplane. Other common software programs include word processing, the video game, desktop publishing programs (see publishing, desktop), and numerical tools for such activities as accounting and stock-market analysis.

Popular software is usually distributed on magnetic disks (see information storage and retrieval). In fact, software and the disk that contains it are often thought of as being the same thing. When a disk is read by the disk-drive unit of a computer, the software is copied into the memory. Then the computer's operating system passes control to the application in a process that activates the program. When the program is terminated, the operating system regains control of the machine and sets about doing some other application or handling requests from the user.

The sophistication or power of software programs is related to the amount of information that can be stored on a disk and to the size of a computer's memory. With tremendous advances in microelectronics, which have led to powerful memory chips, even microcomputers can now accommodate sophisticated software programs. Modern software and hardware can handle text, graphics, sound, and movies.

Although the costs of computer hardware have decreased dramatically over the years, the cost of software has not. This is mainly because techniques for developing software have not improved dramatically, but it is also related to the problem of software copying, or piracy. Most software is protected by copyright law, but such laws are difficult to enforce because it is a simple matter to copy software from one diskette to another. This problem is particularly acute in the business world, where a large company might purchase a single software program and then copy it for use by hundreds of employees. Some software companies are attacking this problem by site licensing --offering price discounts to customers who make bulk purchases of a software program.

The expanding roles of personal computers in homes and businesses have caused the importance of software to grow (see computer, personal). In the years ahead the software industry will continue to deal with the issues of developmental costs, piracy, consumer needs, and the power and versatility of programs. In particular, new methods will be developed that will reduce the length of time and the costs associated with writing new programs.



To enable computer hardware and software to be compatible (work together), manufacturers and technical organizations have established standards on hundreds of issues: how graphics are displayed on a monitor, how data are transmitted by modems, how messages should be transferred within a network, and so on. Some standards are accepted internationally. Others are unique to a country or region, which can create problems for people who travel.

As technology advances, established standards need to be reconsidered. For example, the standards for CD-ROM drives and discs (see compact disc) were being reviewed in 1995 as the entertainment industry pushed for a CD-ROM that would have sufficient capacity to hold a feature film. This would require not only new storage-capacity standards but also new standards for access times and data-transfer rates. Unless everyone agrees on a single format, competing formats will create a compatibility problem--with some CD-ROMs playable on some drives but not on others.



A computer terminal is a device that allows a user to interact with a central computer or computer system. Terminals allow for input and display of data but typically do not contain a central processing unit. Processing of data is carried out on a remote "server" computer to which the terminal is connected by direct wiring or telephone lines. Terminals can resemble a personal computer or assume other forms. The typewriterlike devices used for making airline and motel reservations are computer terminals, as are the devices resembling cash registers used in automated checkout counters.



Devices that provide for the movement of information between the central processing unit (CPU) of a computer and the external world are called input/output (I/O) devices. They are very important because every computer functions by accepting input and producing output. Input is the control information (programs and commands) that directs computing activities. It also includes the data (digital numbers, characters, or pictures) manipulated by the computing activities. Output is information produced as a result.

Because of the wide variety of forms of information, many types of I/O devices are used. They may be characterized according to the information medium, the hardware technology, the speed of information transfer, and the amount or capacity of information involved. Many devices support the movement of information between a storage medium and processor. Others support communication between the computer system and the world of noncomputer devices. Storage-oriented devices store information in computer-readable form. Nonstorage devices are used when it is not necessary to move the same information both into and out of the computer. Information is transformed from a computer- readable form into a form readable by a person or machine.

   Nonstorage-Oriented Devices

Typical devices that are not oriented toward machine-readable storage are computer monitors (cathode ray tubes, or CRTs), keyboards, printers, plotters, optical scanners, and converters between analog and digital information. CRTs display information sent from the CPU in text or graphical form. Keyboards support the input of character information (see keyboard, computer). Nontext information can be entered into the computer through a microphone (see voice recognition), musical keyboards, and instruments equipped with the MIDI (Musical Instrument Digital Interface; see electronic music). On graphics tablets, or "notebook" computers, users enter handwritten or hand-drawn information with a stylus directly on a computer's display screen. The joystick, lightpen, mouse, and trackball are common devices for input of information or for control of processes through a graphical user interface (a pictorial representation of information on a CRT). In each case, movement of the device is translated by a controlling program into a pictorial representation of that movement on the CRT.

Plotters produce graphical output on paper or film. Printers produce paper output of character information at high speed (see printer, computer). Optical scanners are input devices that read intensities of reflected light (see scanning). They can be used to "capture" graphic images for digital storage. Scanners with optical character recognition software read text on paper and translate the scanned information into text files. bar code readers are optical scanners used to read standard product code bars on retail merchandise for input to computers. facsimile, or fax, machines have both scanning capabilities and the ability to transmit the information over telecommunications lines to other fax machines. The analog-to-digital converter, digital-to-analog converter, and modem enable communication between digital computers and analog devices.

   Storage-Oriented Devices

Examples of storage-oriented devices include magnetic tapes and discs, and the optical compact disc (see also information storage and retrieval). Magnetic devices--the most popular type --employ the property of magnetic particles that allows them to be polarized in one of two directions, so that they can carry binary information. Compact-disc technology is replacing magnetic devices for many uses, particularly in cases when a software application requires speedy access to a large store of graphic information.

   Interfacing I/O Devices to Computers

To provide some standardization of interfaces for the many types of I/O devices and to increase efficiency of I/O operations, I/O channels were developed. A channel exists between the computer and perhaps several devices, so that the specializations of each device are isolated. Channels provide a direct path between various devices and the computer memory. This feature is known as direct memory access. Channels are programmable and operate independently of the processor, once started, allowing I/O to take place simultaneously with computation. I/O technology is a fast-changing field, and sophisticated forms of I/O, such as voice, visual, and tactile communication, have been developed and are being pursued. A trend in the consumer market has been to combine various peripherals in one package--such as a fax machine with a photocopier or a scanner with a printer.




A computer virus is a portion of computer code designed to insert itself into an existing computer program, alter or destroy data, and copy itself into other programs in the same computer or into programs in other computers. Its name was coined from its ability to "replicate" and "infect" other computers. A computer virus can spread through shared computer software, through an online service (see database), or through a network (see computer network). Programmers who design viruses often are "hackers" who do so as a prank; a virus of this sort might cause a humorous message to appear on a computer's video screen. Others programmers design viruses with the deliberate intent to destroy data. In one well-publicized incident, a virus crippled or slowed down 6,000 computers in a research network overnight.

Since the emergence of computer viruses in the early 1980s, the U.S. government and many states have passed laws making it illegal to introduce viruses into the computers of unwitting users. Computer-software companies have also designed programs that safeguard against viruses. The programs are not foolproof, however, because new computer viruses are constantly being created and disseminated.



A personal computer (PC) is a complete microcomputer that is based on a microprocessor, a small semiconductor chip that performs the operations of a central processing unit, or CPU. A PC also has other integrated circuits. It is designed for use by a single user, and usually includes a keyboard and a monitor, or Video Display Terminal.

Two of the chief measures of computing power are computer memory size and processing speed. The unit of memory is the byte, which can hold one character of text. A kilobyte (Kbyte) is 1,024 bytes, a megabyte (Mbyte) is 1,024 Kbytes, and a gigabyte (Gbyte) is 1,024 Mbytes. These measures have been used to distinguish PCs from larger minicomputers and mainframe computers, but the increasing power of the PC has blurred these distinctions. The memory capacity of early PCs was often as small as 16 Kbytes, but by the mid-1990s typical PCs were equipped with 4 to 16 Mbytes of memory. This can often be expanded to as much as 128 Mbytes or even to several Gbytes in a workstation, which is the most powerful form of PC.

The processing speed of PCs is commonly specified by the speed of the electronic clock that controls internal operations. The latter measure is most commonly used with PCs. Early PCs had clock speeds of one or two megahertz (MHz), but speeds of 100 MHz or more are possible in modern designs.

Basic Structure

A computer system consists of three parts: the CPU, input-output devices (I/O devices), and memory. A CPU performs arithmetic and logic operations. PCs generally use processors that can process 16-bit (2-byte) or 32-bit (4-byte) chunks of information.

The most common input devices are keyboards and pointing devices, such as "mice" or "trackballs." The most common output device is the cathode-ray tube (CRT) display, or monitor. Displays provide both graphic and text modes. Graph displays and pointing devices make possible a "point and click" form of control that is easier for the user than typing commands at a keyboard. Other common I/O devices are scanners, microphone and speaker sound interfaces, and modems and network interfaces for communicating with other computers; the mouse, joystick, and light pen, for making tactile input; and printers, for producing "hard," or paper, copy (permanent output).

Primary memory refers to memory that is directly accessible by the CPU. Modern processors can handle from 16 Mbytes to 4 Gbytes. PCs are usually sold with less primary memory than the CPU can handle. Upgrades can be made later on..

Secondary memory refers to external memory required to store data that will not fit into primary memory or that must be kept permanently. (In most PCs, the contents of primary memory are lost when power is removed.) Magnetic disks are the most common form of secondary memory. Hard disks, often called fixed disks because they cannot be removed from the computer, typically can store from 100 million to 500 million characters of text information. Flexible (floppy) disks have much lower capacity but can be removed and stored off-line. Floppy disks are the usual way new software is introduced into a PC.

Other secondary memory devices commonly used are CD-ROM (compact-disc read-only memory) and magnetic tape drives. A CD-ROM can hold about 600 million characters and is ideal as a repository for a large amount of information (such as this encyclopedia) that needs to be readable but does not need to be changed by the computer user. Magnetic tapes have large capacity but are much slower than disks. Tapes are primarily used as backup devices so that valuable information can be restored if a fixed disk drive fails.


Established computer manufacturers were slow to see the potential market for PCs. The industry was sparked instead by hobbyists, inventive individuals, and new companies (see computer industry). The first small computers were sold as do-it-yourself kits in 1976. Only experts could assemble and program these, however. Incorporation of the easy-to-use BASIC programming language (see BASIC) as a built-in feature of ready-to-use computers marked the beginning of the true PC and made small computers accessible to nonexperts. By 1977, Apple and Commodore were producing such machines.

Many other small companies were soon competing, and within a year large companies such as Radio Shack--not previously involved with computers--had entered the field. Traditional computer companies such as IBM took a relatively long time to develop PCs. Their eventual entry into the field had a major effect, however, because potential purchasers who lacked technical knowledge were then able to buy from well-known and trusted manufacturers. Another important boost came with the development of computer software that made PCs accessible to users who did not know how to program. Many new companies entered this market, but very few of the traditional computer companies made the transition to mass marketing that came to be demanded.

PCs have become almost indispensable in business, industry, and education. In some cases they have entered areas where computers were not previously used. In other cases, large centralized systems have been supplemented or replaced by small computers, often connected by networks. These developments have had major economic effects on the companies. On an international scale, tiny but highly valuable computer components or entire systems can be shipped very economically. This has had an important impact on trade patterns.


The usefulness of the PC has grown steadily with the increased capability of the machines and the powerful software that has been developed for them. Word processing programs, spreadsheets, and database management programs are available to individuals. Video games are just one aspect of what have come to be known as multimedia applications, in which the computer produces a complex sight-and-sound environment useful in art, business, and education as well as for entertainment (see computers in education). Larger primary and secondary memories, faster processing, and very-high-resolution displays also make programs easier to use in combinations. Modern PCs can have several programs active at once, with the status of each program displayed in "windows" on the screen. This makes it easy to transfer data from one program to another.

The personal computer is causing revolutionary changes in many fields. For example, graphics programs and high-resolution printers relieve architects, designers, and engineers of many time-consuming tasks. Textbook authors use desktop publishing to help ensure that technical errors do not creep into the creation of their books. Many libraries are abandoning traditional card catalogs and replacing them with computerized systems that can then be accessed over phone lines and networks by users anywhere.

High-speed data communication and portable computers make it possible for many people to do much of their work outside the office. Networks are used to allow the sharing of expensive resources as well as for routine communications. Electronic mail (e-mail) and modems can be used to transmit complete programs, graphic images, and digitized sound as well as written messages to the PC in the home as well as to the office workstation.



Computer-aided design and computer-aided manufacturing (CAD/CAM) is the integration of two technologies. It has been called the "new industrial revolution." In CAD, engineers use specialized computer software to create models (see computer modeling) that represent the geometry and other characteristics of objects. Such models are analyzed by computer and redesigned as necessary. This allows for flexibility in studying different and daring designs without the high costs of building and testing physical prototypes. In CAM, engineers use computers for planning manufacturing processes, controlling manufacturing operations, testing finished parts, and managing entire plants (see process control). CAD is linked with CAM through a database shared by design and manufacturing engineers.

Mechanical design and electronic design are the major applications of CAD/CAM. Computer-aided mechanical design is most often done with automated drafting programs that employ interactive computer graphics. Geometric information is entered into the computer to create basic elements such as points, lines, and circles. Additional constructions using these elements include drawing tangents to curves, creating rounded corners, making copies of elements at new positions, and so on. Elements can be moved, rotated, mirrored, and scaled, and the user can zoom in on details. Computerized drafting is faster and more accurate than manual drafting and makes retrieval and modification easier.

Another representation technique is called solid modeling. A solid model represents an object's solid nature and not simply its external appearance. One solid-modeling technique builds up complex parts by combining basic shapes, called primitives, such as boxes, cylinders, spheres, and cones. Realistic shaded images of the model in various positions can be generated by the computer, and portions can be removed to view the interior. Properties such as weight, volume, location of the center of gravity, and surface area are calculated automatically. A computer technique called finite element analysis can be used to evaluate the structural performance of the part when forces are applied.

Geometric models are used to link CAD with CAM. An example is numerical control (NC) technology, which uses geometric information to create computer programs for machining parts. Each time an NC program is run, a manufacturing machine repeats operations exactly as programmed, producing parts rapidly and accurately. The use of robots (see robot) to load and unload NC machines results in complete automation.

Electronic CAD techniques are used to design various electronic devices including VLSI (very large-scale integrated) circuits. Without CAD, today's ultradense VLSI chips would be impossible. In the "standard cell" technique a designer builds complex VLSI circuits by interconnecting appropriate small circuits that are retrieved from a computer library. The computer automatically positions the cells and routes the interconnections. Simulation software is used to verify the logic of the design, check voltages, currents, and timing, and produce tests to check the finished chip.

One method for manufacturing VLSI chips uses a photomasking and etching process to selectively etch through a surface layer to expose another layer. The masks used in this process are produced by CAM software from the layout.

So-called desktop manufacturing enables a designer to fabricate a model directly from data stored in computer memory. One such system uses a laser to fuse plastic granules together, layer by layer, until the model is achieved. Another system uses a milling machine to mold the model from wax. Expert systems and other software programs help designers to consider both function and manufacturing consequences at early stages, when designs are easily modified.

More and more manufacturing businesses are integrating CAD/CAM with other aspects of production, including inventory tracking, scheduling, and marketing. This concept, known as computer- integrated manufacturing (CIM), contributes to effective materials management, speeds processing of manufacturing orders, and proves the basis for significant cost savings.

George Zinsmeister




Scientists have identified several potential health hazards for people who spend many hours of the day using computers. Eyestrain, perhaps accompanied by headaches, is the most common. Proper lighting, frequent breaks, and regular cleaning of the display screen are helpful. Backaches and stiff necks comprise the second most common health problem, frequently decreasing people's ability to concentrate and perform at peak levels. Good posture, use of a well-designed, adjustable chair that supports the lower back, periodic breaks, and a program of stretching and deep-breathing exercises help alleviate stress and tension. A type of repetitive stress injury, called carpal tunnel syndrome, is the result of severe muscle fatigue and nerve compression. Proper posture, proper positioning of the wrists and hands, and frequent breaks are usually good preventive measures.

Display screens, or monitors (see cathode-ray tube), emit low-level electromagnetic radiation, which has been linked, some say, to an increased incidence of cancer, birth defects, and miscarriages. Newer monitors emit reduced levels of radiation.



The rise of computer technology overturned millennia of physical and economic limitations on the ability of authorities to collect, organize, process, and distribute information. While this has revolutionized science, business, and government operations, and greatly enhanced many aspects of individual and social life, it has also created severe pressures on the individual's claim in democratic societies to enjoy reasonable expectations of personal privacy.

Democratic societies recognize zones of privacy for many activities of individuals, groups, and associations by limiting the power of public and private authorities to compel disclosure of such private matters or to put them under investigative surveillance. While privacy is not treated as an absolute, its importance to democratic values of individualism, dissent, and political liberty has led democracies to give privacy a high place in their social and legal arrangements. The computer age has forced the public to reconsider and redefine what privacy should and can mean in a high-technology age.

   Background and Dimensions of the Problem

One major area of privacy involves the collection and use of personal information by public and private organizations. By the 1950s, organizational record keeping had already become a mainstay of organizational life in complex, urban societies. Government and business organizations compiled and used extensive records on individuals, utilizing manual files and electromechanical technology (typewriters, telephones, cameras, mimeographs, and so on). While democratic nations had installed some legal rules to assure privacy rights in these operations, the preservation of privacy rested mainly on the high-cost and manpower limitations in organizational-records use.

This began to change as electronic data processing spread through the organizational world in the late 1950s and the 1960s. Computer systems not only increased significantly the ability of organizations to collect, store, process, and disseminate information but also decreased significantly the cost and time required to do so. Organizations could now afford to collect and share with other organizations far more personal information and could use the information in ways that record subjects would not know about or have any control over under existing U.S. law. In the private sector this would involve credit, banking, insurance, employment, and medical transactions; in the public sector, activities such as welfare, law enforcement, taxation, and licensing programs.

Such early alarms brought about the next step of society's response to the computers-and-privacy question--detailed empirical studies by government and private organizations during 1969-74 into just what computers could do, were doing, and might be able to do in the near future. These studies found that public and private organizations were not yet collecting more personal data about their subjects, exchanging these more widely outside traditional networks, or creating new secret record systems or evaluation practices. However, it would be only a short time before reduction of hardware costs for data input and storage, and increases in software capabilities, would make greatly increased data collection and collation of the data and existing records highly cost effective. The studies concluded that existing U.S. law did not provide the safeguards needed to assure basic citizen rights.

These findings prompted three quite different reactions: (1) that organizations would not misuse the new computing power, and no legal change was necessary; (2) that this technology was so powerful and so likely to be abused that there should be enacted a combination of bans on many uses and drastic controls on others; and (3) to let the technology proceed under rules extending traditional privacy and due process rights to cover computerized information practices.

The third view was the one that prevailed. It won out over the "nothing-is-needed" position because events such as the Watergate scandal and exposures of federal agency surveillance practices in the early 1970s convinced the public that safeguards against government abuse of information power were necessary. Also, as social change in the 1960s and 1970s produced greater acceptance of diversity, the public wanted to be sure that business or government records were not used to discriminate against "different" people. At the same time, the many positive uses of computer technology seemed far too valuable to outlaw computer use because of "potential threats."

   Protecting Computerized Data

The result of the policy debate was the promulgation during the 1970s and early 1980s of what is considered the first generation of privacy protection rules for the computer age. Fair information practices were enacted by law or adopted as organizational rules covering all federal agencies, state agencies in many states, and various specific areas of record keeping--credit, insurance, banking, law enforcement, and so on. Such laws (1) required personal-data record systems to be publicized and their uses described to record subjects; (2) set rules of confidentiality and for sharing personal data beyond the collecting organization; and (3) gave record subjects rights to inspect, correct, and challenge information in their files.

Generally, if an individual believed that public officials or private managers were violating the fair-information-practices laws, and administrative procedures did not afford relief, the individual could bring a lawsuit and have judicial review of his or her complaint. Unlike most other democracies that also passed privacy-protection laws in this period, including Sweden, France, and West Germany, the United States did not create federal or state data protection or privacy protection commissions to license computer data banks, receive citizen complaints, and carry out enforcement activities.

The first generation of data protection has made the collection and use of personal information by government and business organizations far more visible to record subjects and society than these activities were before. It has also installed effective rights of inspection and correction, probably increased the accuracy of record-based decisions about people, and allowed far more public consideration of "relevancy" and "propriety"issues than existed previously.

In the late 1980s and the 1990s the computers-and-privacy debate was reopened. Partly, this was because of major technological advances. The enormous proliferation of minicomputers, desktop terminals, and personal computers meant that data banks could now be created and used by millions of persons. The expansion of telecommunications produced vast streams of personal data being transmitted on the airwaves, and interception by hackers, business competitors, police, and other interlopers became a growing concern.

The new privacy debate centered on the ways government and industry have been using enhanced computer capabilities. Both state and federal governments are increasingly using computer matching programs that make computer comparisons of large welfare, employment, and other automated files in order to kick out what seem to be instances of fraudulent or improper beneficiary payments. As more and more office and customer-service work came to be done with computer systems using video display terminals (VDTs), many private and public employers began to adopt detailed computer monitoring of their VDT operators' performance, leading civil libertarians to charge that Big Brother had gone electronic.

On another front, American business moved strongly into direct marketing, in which offering people goods and services by mail or telephone calls depended on compiling detailed computer profiles of individual consumers' demographic characteristics and consumer activity. At the same time, the credit reporting industry, now concentrated in three national companies each maintaining computer files on more than 175 million Americans, came under criticism for troublesome levels of mistakes in their reports and insufficiently timely and responsive procedures for correcting errors. And, as more personal medical information has become computerized and a system of nationally regulated health-care reform was debated in 1993-94, and with little legal protection for medical confidentiality, ensuring the privacy of personal medical records became a high-visibility public issue.

By 1994 a Louis Harris survey showed that 84 percent of the American public reported they were "concerned" about threats to their personal privacy, and 51 percent said they were "very concerned." Privacy advocates concluded that the rapid and deepening spread of computers calls for the creation of a national privacy protection agency or commissioner to examine impacts of new computer applications, publicize the need for new rules or laws, and perhaps have the authority to issue privacy-protection regulations.

Supporters of the fair-information-practices approach prefer applying a sector-by-sector scrutiny in each field, such as credit reporting, health care, and use of new telephone services, reflecting the special balances between legitimate information uses and valid privacy claims that each sector features. Congress debated many such updated or new federal laws in 1992-94, and some were passed.





Since their introduction in schools in the early 1980s computers and computer software have been increasingly accessible to students and teachers--in classrooms, computer labs, school libraries, and outside of school. By the mid-1990s there were about 4.5 million computers in elementary and secondary schools throughout the United States. Schools buy Macintosh and IBM-compatible computers almost exclusively, although nearly half of their inventory is composed of computers based on older designs such as the Apple IIe. Students spend on the average an hour per week using school computers.

Computers can be used for learning and teaching in school in at least four ways. First, learning involves acquiring information. Computers--especially linked to CD-ROMs and video disks that electronically store thousands of articles, visual images, and sounds--enable students to search the electronic equivalent of an encyclopedia or a video library to answer their own questions or simply to browse through a maze of fascinating and visually appealing information.

Second, learning involves the progressive development of skills like reading and mathematics--skills that are basic academic enablers. Software called "computer-assisted instruction," or CAI, poses questions to students and compares each answer with a single correct answer. Typically, such programs respond to wrong answers with an explanation and another, similar problem. Sometimes CAI programs are embedded in an entertaining gamelike context that holds student interest and yet maintains student attention on academic work. Most CAI programs cover limited material, but some large-scale, multiyear reading and mathematics curricula have been developed.

Third, learning involves the development of a wide variety of analytic competencies and complex understandings. Computers help students attain these goals through software such as word processors (to clarify ideas through writing), graphing and "construction" tools (to clarify concepts and examine conjectures in mathematics), electronic painting and computer-assisted drafting (CAD) programs, music composition programs, simulations of social environments, and programs that collect data from science laboratory equipment and aid in its analysis.

Finally, a large element in learning is communicating with others--finding and engaging an audience with one's ideas and questions. Several types of computer software can be used in schools for communications: desktop publishing and image-editing software for making professional-quality printed materials, computer programming languages such as Hypercard for creating interactive computer exercises, and telecommunications software for exchanging ideas at electronic speeds with students in other classrooms all over the world.

In spite of the variety and power of education-related computer software, surveys have shown that students are still using school computers primarily within a limited range of the possible computer applications--mainly to practice basic language and math skills and to learn about computers and computer software. This is very similar to how students used the first school microcomputers back in the early 1980s. The major change between the 1980s and today in computer use has been a reduced emphasis on teaching students to program computers and an increased emphasis on teaching word processing and similar computer applications. Only a small percentage of secondary school classes in regular subjects (math, English, science) provide students with substantial experience in using computers. More elementary school students use computers than do high school students, but their use is somewhat less extensive. Even high school students experience computers mostly as another set of skills to master, rather than using them productively to accomplish understanding and to demonstrate competence in other subjects.

There are several reasons why most students' use of school computers is so limited in time and variety. The number of school computers, although still growing, is small compared with the number of students present in schools (roughly one to ten). Schools continue to locate a majority of their computers in specialized, teacher-shared spaces like computer labs in order to enable as many students as possible to have some experience in using computers, but this practice impedes integrating computers into other learning activities. Most regular classrooms, if they have any computers at all, have only one or two, which precludes orchestrating computer access for entire classrooms of students.

Another problem is the limited capacity of most school computers. Apart from the many older computers in schools, even many of the newer models have limited processing power, inadequate computer memory, and a lack of storage capabilities such as hard disk drives and CD-ROM players. Consequently much of the most recently produced, most sophisticated software cannot be used on most school computers.

In addition, most teachers--with responsibility for teaching five classes of students or for teaching many different subjects--do not have the time to learn how to use a wide variety of types of software in their teaching. The more complex the software, the more difficult it is for teachers to learn to manage its use. Finally, the cost of both computer hardware and software is much greater than the cost of traditional teaching and learning materials.

As a result of the difficulties that schools have had in exploiting the potential of computer technology, some critics see computer education as merely the latest in a series of unsuccessful attempts to revolutionize education through the use of audio- and visually oriented nonprint media. For example, motion pictures, broadcast television, filmstrips, audio recorders, and videotapes were all originally heralded for their instructional potential, but each of these ultimately became a minor classroom tool alongside conventional methods.

Supporters believe, however, that computers are a much more powerful learning medium than the innovative instructional devices that preceded them. They cite the essential interactive nature of using computers programmed to provoke decision making and manipulations of visual environments. Learning tasks can become more individualized, enabling each student to receive immediate feedback. Experts say that having students work collaboratively on computers leads to greater initiative and more autonomous learning. Proponents also argue that because computers are so pervasive in society, "computer literacy" is itself a worthy goal.




Computer, machine that performs tasks, such as mathematical calculations or electronic communication, under the control of a set of instructions called a program. Programs usually reside within the computer and are retrieved and processed by the computer's electronics, and the program results are stored or routed to output devices, such as video display monitors or printers. Computers are used to perform a wide variety of activities with reliability, accuracy, and speed.

Uses of Computers

People use computers in a wide variety of ways. In business, computers track inventories with bar codes and scanners, check the credit status of customers, and transfer funds electronically. In homes, tiny computers embedded in the electronic circuitry of most appliances control the indoor temperature, operate home security systems, tell the time, and turn videocassette recorders on and off. Computers in automobiles regulate the flow of fuel, thereby increasing gas mileage. Computers also entertain, creating digitized sound on stereo systems or computer-animated features from a digitally encoded laser disc. Computer programs, or applications, exist to aid every level of education, from programs that teach simple addition or sentence construction to advanced calculus. Educators use computers to track grades and prepare notes; with computer-controlled projection units, they can add graphics, sound, and animation to their lectures (see Computer-Aided Instruction). Computers are used extensively in scientific research to solve mathematical problems, display complicated data, or model systems that are too costly or impractical to build, such as testing the air flow around the next generation of space shuttles. The military employs computers in sophisticated communications to encode and unscramble messages, and to keep track of personnel and supplies.

How Computers Work


The physical computer and its components are known as hardware. Computer hardware includes the memory that stores data and instructions; the central processing unit (CPU) that carries out instructions; the bus that connects the various computer components; the input devices, such as a keyboard or mouse, that allow the user to communicate with the computer; and the output devices, such as printers and video display monitors, that enable the computer to present information to the user. The programs that run the computer are called software. Software generally is designed to perform a particular type of task—for example, to control the arm of a robot to weld a car's body, to draw a graph, or to direct the general operation of the computer.

The Operating System

When a computer is turned on it searches for instructions in its memory. Usually, the first set of these instructions is a special program called the operating system, which is the software that makes the computer work. It prompts the user (or other machines) for input and commands, reports the results of these commands and other operations, stores and manages data, and controls the sequence of the software and hardware actions. When the user requests that a program run, the operating system loads the program in the computer's memory and runs the program. Popular operating systems, such as Windows 95 and the Macintosh operating system, have a graphical user interface (GUI)—that is, a display that uses tiny pictures, or icons, to represent various commands. To execute these commands, the user clicks the mouse on the icon or presses a combination of keys on the keyboard.

Computer Memory

To process information electronically, data are stored in a computer in the form of binary digits, or bits, each having two possible representations (0 or 1). If a second bit is added to a single bit of information, the number of representations is doubled, resulting in four possible combinations: 00, 01, 10, or 11. A third bit added to this two-bit representation again doubles the number of combinations, resulting in eight possibilities: 000, 001, 010, 011, 100, 101, 110, or 111. Each time a bit is added, the number of possible patterns is doubled. Eight bits is called a byte; a byte has 256 possible combinations of 0s and 1s.

A byte is a useful quantity in which to store information because it provides enough possible patterns to represent the entire alphabet, in lower and upper cases, as well as numeric digits, punctuation marks, and several character-sized graphics symbols, including non-English characters such as p. A byte also can be interpreted as a pattern that represents a number between 0 and 255. A kilobyte—1000 bytes—can store 1000 characters; a megabyte can store 1 million characters; and a gigabyte can store 1 billion characters.

The physical memory of a computer is either random access memory (RAM), which can be read or changed by the user or computer, or read-only memory (ROM), which can be read by the computer but not altered. One way to store memory is within the circuitry of the computer, usually in tiny computer chips that hold millions of bytes of information. The memory within these computer chips is RAM. Memory also can be stored outside the circuitry of the computer on external storage devices, such as magnetic floppy disks, which store about 2 megabytes of information; hard drives, which can store thousands of megabytes of information; and CD-ROMs (compact discs), which can store up to 600 megabytes of information.

The Bus

The bus is usually a flat cable with numerous parallel wires. The bus enables the components in a computer, such as the CPU and memory, to communicate. Typically, several bits at a time are sent along the bus. For example, a 16-bit bus, with 16 parallel wires, allows the simultaneous transmission of 16 bits (2 bytes) of information from one device to another.

Input Devices


Input devices, such as a keyboard or mouse, permit the computer user to communicate with the computer. Other input devices include a joystick, a rodlike device often used by game players; a scanner, which converts images such as photographs into binary information that the computer can manipulate; a light pen, which can draw on, or select objects from, a computer's video display by pressing the pen against the display's surface; a touch panel, which senses the placement of a user's finger; and a microphone, used to gather sound information.

The Central Processing Unit (CPU)

Information from an input device or memory is communicated via the bus to the CPU, which is the part of the computer that translates commands and runs programs. The CPU is a microprocessor chip—that is, a single piece of silicon containing millions of electrical components. Information is stored in a CPU memory location called a register. Registers can be thought of as the CPU's tiny scratchpad, temporarily storing instructions or data. When a program is run, one register called the program counter keeps track of which program instruction comes next. The CPU's control unit coordinates and times the CPU's functions, and it retrieves the next instruction from memory.

In a typical sequence, the CPU locates the next instruction in the appropriate memory device. The instruction then travels along the bus from the computer's memory to the CPU, where it is stored in a special instruction register. Meanwhile, the program counter is incremented to prepare for the next instruction. The current instruction is analyzed by a decoder, which determines what the instruction will do. Any data the instruction needs are retrieved via the bus and placed in the CPU's registers. The CPU executes the instruction, and the results are stored in another register or copied to specific memory locations.

Output Devices

Once the CPU has executed the program instruction, the program may request that information be communicated to an output device, such as a video display monitor or a flat liquid crystal display. Other output devices are printers, overhead projectors, videocassette recorders (VCRs), and speakers.

Programming Languages

Programming languages contain the series of commands that create software. In general, a language that is encoded in binary numbers or a language similar to binary numbers that a computer's hardware understands is understood more quickly by the computer. A program written in this type of language also runs faster. Languages that use words or other commands that reflect how humans think are easier for programmers to use, but they are slower because the language must be translated first so the computer can understand it.

Machine Language

Computer programs that can be run by a computer's operating system are called executables. An executable program is a sequence of extremely simple instructions known as machine code. These instructions are specific to the individual computer's CPU and associated hardware; for example, Intel Pentium and Power PC microprocessor chips each have different machine languages and require different sets of codes to perform the same task. Machine code instructions are few in number (roughly 20 to 200, depending on the computer and the CPU). Typical instructions are for copying data from a memory location or for adding the contents of two memory locations (usually registers in the CPU). Machine code instructions are binary—that is, sequences of bits (0s and 1s). Because these numbers are not understood easily by humans, computer instructions usually are not written in machine code.

Assembly Language

Assembly language uses commands that are easier for programmers to understand than are machine-language commands. Each machine language instruction has an equivalent command in assembly language. For example, in assembly language, the statement “MOV A, B” instructs the computer to copy data from one location to another. The same instruction in machine code is a string of 16 0s and 1s. Once an assembly-language program is written, it is converted to a machine-language program by another program called an assembler. Assembly language is fast and powerful because of its correspondence with machine language. It is still difficult to use, however, because assembly-language instructions are a series of abstract codes. In addition, different CPUs use different machine languages and therefore require different assembly languages. Assembly language is sometimes inserted into a higher-level language program to carry out specific hardware tasks or to speed up a higher-level program.

Higher-Level Languages

Higher-level languages were developed because of the difficulty of programming assembly languages. Higher-level languages are easier to use than machine and assembly languages because their commands resemble natural human language. In addition, these languages are not CPU-specific. Instead, they contain general commands that work on different CPUs. For example, a programmer writing in the higher-level Pascal programming language who wants to display a greeting need include only the following command:

Write (‘Hello, Encarta User!’);

This command directs the computer's CPU to display the greeting, and it will work no matter what type of CPU the computer uses. Like assembly language instructions, higher-level languages also must be translated, but a compiler is used. A compiler turns a higher-level program into a CPU-specific machine language. For example, a programmer may write a program in a higher-level language such as C and then prepare it for different machines, such as a Cray Y-MP supercomputer or a personal computer, using compilers designed for those machines. This speeds the programmer's task and makes the software more portable to different users and machines.

American naval officer and mathematician Grace Murray Hopper helped develop the first commercially available higher-level software language, FLOW-MATIC, in 1957. Hopper is credited for inventing the term bug, which indicates a computer malfunction; in 1945 she discovered a hardware failure in the Mark II computer caused by a moth trapped between its mechanical relays.

From 1954 to 1958 American computer scientist Jim Backus of International Business Machines, Inc. (IBM) developed FORTRAN, an acronym for FORmula TRANslation. It became a standard programming language because it can process mathematical formulas. FORTRAN and its variations are still in use today.

Beginner's All-purpose Symbolic Instruction Code, or BASIC, was developed by American mathematician John Kemeny and Hungarian-American mathematician Thomas Kurtz at Dartmouth College in 1964. The language was easier to learn than its predecessors and became popular due to its friendly, interactive nature and its inclusion on early personal computers (PCs). Unlike other languages that require that all their instructions be translated into machine code first, BASIC is interpreted—that is, it is turned into machine language line by line as the program runs. BASIC commands typify higher-level languages because of their simplicity and their closeness to natural human language. For example, a program that divides a number in half can be written as



20 Y=X/2



The numbers that precede each line are chosen by the programmer to indicate the sequence of the commands. The first line prints “ENTER A NUMBER” on the computer screen followed by a question mark to prompt the user to type in the number labeled “X.” In the next line, that number is divided by two, and in the third line, the result of the operation is displayed on the computer screen.

Other higher-level languages in use today include C, Ada, Pascal, LISP, Prolog, COBOL, HTML, and Java. New compilers are being developed, and many features available in one language are being made available in others.

Object-Oriented Programming Languages

Object-oriented programming (OOP) languages like C++ are based on traditional higher-level languages, but they enable a programmer to think in terms of collections of cooperating objects instead of lists of commands. Objects, such as a circle, have properties such as the radius of the circle and the command that draws it on the computer screen. Classes of objects can inherit features from other classes of objects. For example, a class defining squares can inherit features such as right angles from a class defining rectangles. This set of programming classes simplifies the programmer's task, resulting in more reliable and efficient programs.

Types of Computers

Digital and Analog

Computers can be either digital or analog. Digital refers to the processes in computers that manipulate binary numbers (0s or 1s), which represent switches that are turned on or off by electrical current. Analog refers to numerical values that have a continuous range. Both 0 and 1 are analog numbers, but so is 1.5 or a number like p (approximately 3.14). As an example, consider a desk lamp. If it has a simple on/off switch, then it is digital, because the lamp either produces light at a given moment or it does not. If a dimmer replaces the on/off switch, then the lamp is analog, because the amount of light can vary continuously from on to off and all intensities in between.

Analog computer systems were the first type to be produced. A popular analog computer used in the 20th century was the slide rule. It performs calculations by sliding a narrow, gauged wooden strip inside a rulerlike holder. Because the sliding is continuous and there is no mechanism to stop at one exact value, the slide rule is analog. New interest has been shown recently in analog computers, particularly in areas such as neural networks that respond to continuous electrical signals. Most modern computers, however, are digital machines whose components have a finite number of states—for example, the 0 or 1, or on or off of bits. These bits can be combined to denote information such as numbers, letters, graphics, and program instructions.

Range of Computer Ability

Computers exist in a wide range of sizes and power. The smallest are embedded within the circuitry of appliances, such as televisions and wrist watches. These computers are typically preprogrammed for a specific task, such as tuning to a particular television frequency or keeping accurate time.

Programmable computers vary enormously in their computational power, speed, memory, and physical size. The smallest of these computers can be held in one hand and are called personal digital assistants (PDAs). They are used as notepads, scheduling systems, and address books; if equipped with a cellular phone, they can connect to worldwide computer networks to exchange information regardless of location.

Laptop computers and PCs are typically used in businesses and at home to communicate on computer networks, for word processing, to track finances, and to play games. They have large amounts of internal memory to store hundreds of programs and documents. They are equipped with a keyboard; a mouse, trackball, or other pointing device; and a video display monitor or liquid crystal display (LCD) to display information. Laptop computers usually have similar hardware and software as PCs, but they are more compact and have flat, lightweight LCDs instead of video display monitors.

Workstations are similar to personal computers but have greater memory and more extensive mathematical abilities, and they are connected to other workstations or personal computers to exchange data. They are typically found in scientific, industrial, and business environments that require high levels of computational abilities.

Mainframe computers have more memory, speed, and capabilities than workstations and are usually shared by multiple users through a series of interconnected computers. They control businesses and industrial facilities and are used for scientific research. The most powerful mainframe computers, called supercomputers, process complex and time-consuming calculations, such as those used to create weather predictions. They are used by the largest businesses, scientific institutions, and the military. Some supercomputers have many sets of CPUs. These computers break a task into small pieces, and each CPU processes a portion of the task to increase overall speed and efficiency. Such computers are called parallel processors.


Computers can communicate with other computers through a series of connections and associated hardware called a network. The advantage of a network is that data can be exchanged rapidly, and software and hardware resources, such as hard-disk space or printers, can be shared.

One type of network, a local area network (LAN), consists of several PCs or workstations connected to a special computer called the server. The server stores and manages programs and data. A server often contains all of a networked group's data and enables LAN workstations to be set up without storage capabilities to reduce cost.

Mainframe computers and supercomputers commonly are networked. They may be connected to PCs, workstations, or terminals that have no computational abilities of their own. These “dumb” terminals are used only to enter data into, or receive output from, the central computer.

Wide area networks (WANs) are networks that span large geographical areas. Computers can connect to these networks to use facilities in another city or country. For example, a person in Los Angeles can browse through the computerized archives of the Library of Congress in Washington, D.C. The largest WAN is the Internet, a global consortium of networks linked by common communication programs. The Internet is a mammoth resource of data, programs, and utilities. It was created mostly by American computer scientist Vinton Cerf in 1973 as part of the United States Department of Defense Advanced Research Projects Agency (DARPA). In 1984 the development of Internet technology was turned over to private, government, and scientific agencies. The World Wide Web is a system of information resources accessed primarily through the Internet. Users can obtain a variety of information in the form of text, graphics, sounds, or animations. These data are extensively cross-indexed, enabling users to browse (transfer from one information site to another) via buttons, highlighted text, or sophisticated searching software known as search engines.


The history of computing began with an analog machine. In 1623 German scientist Wilhelm Schikard invented a machine that used 11 complete and 6 incomplete sprocketed wheels that could add and, with the aid of logarithm tables, multiply and divide.

French philosopher, mathematician, and physicist Blaise Pascal invented a machine in 1642 that added and subtracted, automatically carrying and borrowing digits from column to column. Pascal built 50 copies of his machine, but most served as curiosities in parlors of the wealthy. Seventeenth-century German mathematician Gottfried Leibniz designed a special gearing system to enable multiplication on Pascal's machine.

In the early 19th century French inventor Joseph-Marie Jacquard devised a specialized type of computer: a loom. Jacquard's loom used punched cards to program patterns that were output as woven fabrics by the loom. Though Jacquard was rewarded and admired by French emperor Napoleon I for his work, he fled for his life from the city of Lyon pursued by weavers who feared their jobs were in jeopardy due to Jacquard's invention. The loom prevailed, however: When Jacquard passed away, more than 30,000 of his looms existed in Lyon. The looms are still used today, especially in the manufacture of fine furniture fabrics.

Another early mechanical computer was the Difference Engine, designed in the early 1820s by British mathematician and scientist Charles Babbage. Although never completed by Babbage, the Difference Engine was intended to be a machine with a 20-decimal capacity that could solve mathematical problems. Babbage also made plans for another machine, the Analytical Engine, considered to be the mechanical precursor of the modern computer. The Analytical Engine was designed to perform all arithmetic operations efficiently; however, Babbage's lack of political skills kept him from obtaining the approval and funds to build it. Augusta Ada Byron (Countess of Lovelace, 1815-52) was a personal friend and student of Babbage. She was the daughter of the famous poet Lord Byron and one of only a few woman mathematicians of her time. She prepared extensive notes concerning Babbage's ideas and the Analytical Engine. Ada's conceptual programs for the Engine led to the naming of a programming language (Ada) in her honor. Although the Analytical Engine was never built, its key concepts, such as the capacity to store instructions, the use of punched cards as a primitive memory, and the ability to print, can be found in many modern computers.

Herman Hollerith, an American inventor, used an idea similar to Jacquard's loom when he combined the use of punched cards with devices that created and electronically read the cards. Hollerith's tabulator was used for the 1890 U.S. census, and it made the computational time three to four times shorter than the time previously needed for hand counts. Hollerith's Tabulating Machine Company eventually merged with other companies in 1924 to become IBM.

In 1936 British mathematician Alan Turing proposed the idea of a machine that could process equations without human direction. The machine (now known as a Turing machine) resembled an automatic typewriter that used symbols for math and logic instead of letters. Turing intended the device to be used as a “universal machine” that could be programmed to duplicate the function of any other existing machine. Turing's machine was the theoretical precursor to the modern digital computer.

In the 1930s American mathematician Howard Aiken developed the Mark I calculating machine, which was built by IBM. This electronic calculating machine used relays and electromagnetic components to replace mechanical components. In later machines, Aiken used vacuum tubes and solid state transistors (tiny electrical switches) to manipulate the binary numbers. Aiken also introduced computers to universities by establishing the first computer science program at Harvard University. Aiken never trusted the concept of storing a program within the computer. Instead his computer had to read instructions from punched cards.

At the Institute for Advanced Study in Princeton, Hungarian-American mathematician John von Neumann developed one of the first computers used to solve problems in mathematics, meteorology, economics, and hydrodynamics. Von Neumann's 1945 Electronic Discrete Variable Computer (EDVAC) was the first electronic computer to use a program stored entirely within its memory.

John Mauchley, an American physicist, proposed an electronic digital computer, called the Electronic Numerical Integrator And Computer (ENIAC), which was built at the Moore School of Engineering at the University of Pennsylvania in Philadelphia by Mauchley and J. Presper Eckert, an American engineer. ENIAC was completed in 1945 and is regarded as the first successful, general digital computer. It weighed more than 27,000 kg (60,000 lb), and contained more than 18,000 vacuum tubes. Roughly 2000 of the computer's vacuum tubes were replaced each month by a team of six technicians. Many of ENIAC's first tasks were for military purposes, such as calculating ballistic firing tables and designing atomic weapons. Since ENIAC was initially not a stored program machine, it had to be reprogrammed for each task.

Eckert and Mauchley eventually formed their own company, which was then bought by the Rand Corporation. They produced the Universal Automatic Computer (UNIVAC), which was used for a broader variety of commercial applications. By 1957, 46 UNIVACs were in use.

In 1948, at Bell Telephone Laboratories, American physicists Walter Houser Brattain, John Bardeen, and William Bradford Shockley developed the transistor, a device that can act as an electric switch. The transistor had a tremendous impact on computer design, replacing costly, energy-inefficient, and unreliable vacuum tubes.

In the late 1960s integrated circuits, tiny transistors and other electrical components arranged on a single chip of silicon, replaced individual transistors in computers. Integrated circuits became miniaturized, enabling more components to be designed into a single computer circuit. In the 1970s refinements in integrated circuit technology led to the development of the modern microprocessor, integrated circuits that contained thousands of transistors. Modern microprocessors contain as many as 10 million transistors.

Manufacturers used integrated circuit technology to build smaller and cheaper computers. The first of these so-called personal computers (PCs) was sold by Instrumentation Telemetry Systems. The Altair 8800 appeared in 1975. It used an 8-bit Intel 8080 microprocessor, had 256 bytes of RAM, received input through switches on the front panel, and displayed output on rows of light-emitting diodes (LEDs). Refinements in the PC continued with the inclusion of video displays, better storage devices, and CPUs with more computational abilities. Graphical user interfaces were first designed by the Xerox Corporation, then later used successfully by the Apple Computer Corporation with its Macintosh computer. Today the development of sophisticated operating systems such as Windows 95 and Unix enables computer users to run programs and manipulate data in ways that were unimaginable 50 years ago.

Possibly the largest single calculation was accomplished by physicists at IBM in 1995 solving one million trillion mathematical problems by continuously running 448 computers for two years to demonstrate the existence of a previously hypothetical subatomic particle called a glueball. Japan, Italy, and the United States are collaborating to develop new supercomputers that will run these calculations one hundred times faster.

In 1996 IBM challenged Gary Kasparov, the reigning world chess champion, to a chess match with a supercomputer called Deep Blue. The computer had the ability to compute more than 100 million chess positions per second. Kasparov won the match with three wins, two draws, and one loss. Deep Blue was the first computer to win a game against a reigning world chess champion with regulation time controls. Many experts predict these types of parallel processing machines will soon surpass human chess playing ability, and some speculate that massive calculating power will one day replace intelligence. Deep Blue serves as a prototype for future computers that will be required to solve complex problems.

Future Developments

In 1965 semiconductor pioneer Gordon Moore predicted that the number of transistors contained on a computer chip would double every year. This is now known as Moore's Law, and it has proven to be somewhat accurate. The number of transistors and the computational speed of microprocessors currently doubles approximately every 18 months. Components continue to shrink in size and are becoming faster, cheaper, and more versatile.

With their increasing power and versatility, computers simplify day-to-day life. Unfortunately, as computer use becomes more widespread, so do the opportunities for misuse. Computer hackers—people who illegally gain access to computer systems—often violate privacy and can tamper with or destroy records. Programs called viruses or worms can replicate and spread from computer to computer, erasing information or causing computer malfunctions. Other individuals have used computers to electronically embezzle funds and alter credit histories (see Computer Security). New ethical issues also have arisen, such as how to regulate material on the Internet and the World Wide Web. Individuals, companies, and governments are working to solve these problems by developing better computer security and enacting regulatory legislation.

Computers will become more advanced and they will also become easier to use. Reliable speech recognition will make the operation of a computer easier. Virtual reality, the technology of interacting with a computer using all of the human senses, will also contribute to better human and computer interfaces. Standards for virtual-reality program languages, called Virtual Reality Modeling language (VRML), currently are being developed for the World Wide Web.

Communications between computer users and networks will benefit from new technologies such as broadband communication systems that can carry significantly more data and carry it faster, to and from the vast interconnected databases that continue to grow in number and type.

Return to Intro Menu