Laying the Groundwork 1 The Big Picture The Information Layer 2 3 Binary Values and Number Systems Data Representation The Hardware Layer 4 5 Gates and Circuits Computing Components The Programming Layer 6 7 Low-Level Programming Languages and Pseudocode Problem Solving and Algorithms 8 9 Abstract Data Types and Subprograms Object-Oriented Design and High-Level Programming Languages The Operating Systems Layer 10 Operating Systems 11 File Systems and Directories The Applications Layer 12 Information Systems 13 Artificial Intelligence 14 Simulation, Graphics, Gaming, and Other Applications The Communications Layer 15 Networks 16 The World Wide Web 17 Computer Security In Conclusion 18 Limitations of Computing ~ THE BIG PICTURE This book is a tour through the world of computing. We explore how computers work-what they do and how they do it, from bottom to top, inside and out. Like an orchestra, a computer system is a collection of many different elements, which combine to form a whole that is far more than the sum of its parts. This chapter provides the big picture, giving an overview of the pieces that we slowly dissect throughout the book and putting those pieces into historical perspective. Hardware, software, programming, web surfing, and email are probably familiar terms to you. Some of you can define these and many more computer-related terms explicitly, whereas others may have only a vague, intuitive understanding of them. This chapter gets everyone on relatively equal footing by establishing common terminology and creating the platform from which we will dive into our exploration of computing. After studying this chapter, you should be able to: describe describe describe describe the layers of a computer system . the concept of abstraction and its relationship to computing. the history of computer hardware and sof tware. the changing role of the computer user. distinguish between systems programmers and applications programmers. distinguish between computing as a tool and computing as a discipline. 3 4 Chapter 1: The Big Picture Computi ng system Computer hardware, software, and data, which interact to solve problems Computer hardware The physical elements of a computing system Computer software The programs that provide the instructions that a computer executes 1.1 Computing Systems In this book we explore various aspects of computing systems. Note that we use the term computing system, not just computer. A computer is a device. A computing system, by comrast, is a dynamic entity, used to solve problems and intera ct with its environment. A computing system is composed of hardware, software, and the dara that they manage . Computer hardware is the collection of physical elements that make up rhe machine and its related pieces: boxes, circuit boards, chips, wires, disk drives, keyboards, monitors, printers, and so on. Computer software is the collection of programs that provide the instructions that a computer carries out. And at the very heart of a computer system is the information that it manages. Without data, the hardware and software arc essentially useless. The general goals of this book are threefold: To give you a solid, broad understanding of how a computing system works To develop an appreciation for and understanding of the evolution of modern compuring systems To give you enough information abom computing so that you can decide whether you wish to pursue the subject further The rest of this section explains how computer systems can be divided into abstract layers and how each layer plays a role. The next section puts the development of computing hardware and software into historica l context. This chapter concludes with a discussion about computing as both a tool and a discipline of srndy. Layers of a Computing System A computing system is like an onion, made up of many layers. Each layer plays a specific role in the overa ll design of the system. These layers are depicted in and form the general organization of this book. This is the "big picture" that we will continually return to as we explore different aspects of computing systems. You rarely, if ever, take a bite out of an onion as you would an apple. Rather, you separate the onion into concentric rings. Likewise, in this book we explore aspects of computing one layer at a tim e. We peel each layer separately and explore it by itself. Each layer, in itscU, is not that complicated. In fact. a computer actually does only very simple tasks-it just does them so blindingly fast that many simple tasks can be combined to 1.1 Computing Systems accomplish larger. more com plica ted tas ks. When Communications the various computer layers are all brought togethApplications er, ead1 playing it s own role, amazing things result from the combination of these basic ideas. Operating systems Let's di scu ss each of these la yers brie fl y and Programming identify where in this book these ideas arc exHardware plo red in more detail. We essentially work o ur way from the inside out, which is somet imes reInformation ferred to as a bottom-up approach. The innermost layer, information, reflects the way we represent information on a computer. In man y ways this is a purely conceptual level. Info rmation o n a computer is managed using binary FIGURE 1.1 The layers of a computing system digits, I and 0. So to understand co mputer processing, we must first understand the binary number system and its re lationship to other number system s (such as the decima l system, the one humans use o n a daily basis). Then we can tllrn our attention to how we take the m yriad types of information we m anage-numbers, text. images, audio, and video-and represent them in a binary format. Chapters 2 and 3 explore these issues. The next layer, hardware, consists of 1he physical hardwa re of a computer syste m. Computer hardware includes devices such as ga tes and circuits, which control the now of elect ri ci ty in fu ndame ntal ways. This core electronic circuitry gives rise to specia lized ha rdware components such as the computer's central processing unit (CPU) and memory. Chapte rs 4 and 5 of the book discuss th ese topics in detail. The progra mming layer deals w it h software, the instru ctions u sed to accomplish computations and man age data. Programs can take man y form s, be performed at many leve ls, and be implemented in many lan g uages. Yet, despite the enormo us variety of programming issues, the goa l remains the same: to solve problems. Chapters 6 throug h 9 explore many issues related to programming and the management o f data . Every compu ter ha~ an operating system (OS) to help ma nage the computer's reso urces. Opera tin g systems, such as Windows XP, Lin ux, or Mac OS, help us interact wi th the computer system and manage the way hardware devices, programs, and data interact. Knowin g wha t an operating system does is key to understanding the computer i11 genera l. These issues are discussed in Chapters LO and 11 . The previous (inner) layers focus on making a compute r system wo rk. The applications la ye r, by con trast. focuses o n using the co mputer to solve specifi c real-world problem . We run application p rog ra ms Chapter 1: The Big Picture to take advantage of the compurer's abilities in other areas, such as helping us design a building or play a game. The spectrum of area-specific computer software tools is far-reaching and involves specific subdisciplines of computing, such as information systems, artificial intelligence, and simularion. Application systems are discussed in Chapters 12, I 3, and 14. Computers no longer exist in isolation on someone's desktop. We use computer technology to communicate, and that communication is a fundamental layer at which compuring sysrems opcrarc. Computers are connected into networks so that they can share information and resources. The Internet, for example, evolved into a global network, so there is now almost no place on Earth that you cannot communicate with via computing technology. The World Wide Web makes that communication relatively easy; it has revolutionized computer usc and made it accessible to the general public. Chapters 15 and 16 discuss these important issues of computing communication. The usc of computing technology can result in increased security hazards. Some issues of security are dealt with at low levels throughout a computer system. Many of them, though, involve keeping our personal information secure. Chapter 17 discusses several of these issues. Mos1 of this book focuses on wha1 a complller can do and how it does it. We conclude with a discussion of what a computer cannot do, or al least cannot do well. Computers have inherent limitations on their ability to represent information, and they are only as good as their programming makes them. Furthermore, it turns out that some problems cannot be solved at all. Chapter 18 examines these limitations of computers. Sometimes it is easy to get so caught up in the de1ails that we lose perspective on the big picture. Try to keep that in mind as you progress through the information in this book. Each chapter's opening page reminds you of where we are in the various layers of a computing system. The details a ll contribute a specific part to a larger whole. Take each step in turn and you will be amazed at how well ii all falls into place. Abstraction Abstraction A mental model that removes complex details The levels of a computing system that we just examined are examples of abstraction. An abstraction is a mental model. a way to think abou 1 something, that removes or hides complex details. An abstraction leaves only the information necessary to accomplish our goal. When we are dealing with a computer on one layer, we don't need to be thinking 1.1 Computing Systems about the details of the other layers. For example, when we are writing a program. we don't have to concern ourselves with how the hardware carries out the instructions. Likewise, when we are running an application program. we don't have co be concerned with how that program was written. Numerous experiments have shown that a human being ca n act ively manage abou t seven (plus or min us two, depending on the person) pieces o r information in short-term memory at one time. This is called Miller's Law, based on the psychologist who first investigated it. 1 Other pieces of info rma tion are available to us when we need them, but when we focus on a new piece. something e lse falls back into seconda ry status. This concept is similar to the number of balls a juggler can keep in the air al one time. Human beings can mentally juggle about seven ba lls at once, and when we pick up a new one, we ha ve to drop another. Seven may seem like a small number, but the key is that each ball can represent an abstraction. or a chunk of information. That is, each ball we are juggling can rep resent a complex topic as long as we can think about it as one idea. We rely on abstractions every day of our li ves. For example, we don't need to know how a car wo rks to drive one lo the store. That is, we don't really need to know how the engine works in detail. We need to know only some basics about how to interact with the car: how the pedals and knobs and steering wheel work. And we don't even have to be thinking about all of those things at the same time. See FIGURE 1.2 A car engine and the abstraction that allows us to use it Owl!) ~s.r I ~h ti .11 Chapter 1: The Big Picture Even if we do know hmv an engine works, we don't have to think about it while driving. Imagine if, while driving. we had to constantly think about how the spark plugs ignite the fuel thac drives the pistons that turn the crankshaft. We'd never get anywhere! A car is much too complicated for us to deal with all at once. All the technical details would be too piece to access many balls to juggle at the same time. But once we've abstracted the car the information in down to the way we interact with it, we can deal with it as one cmity. The another irrelevant details arc ignored, al least for the moment. Information hiding is a concept related to abstraction. A computer programmer often tries to eliminate the need or ability of one part of a program to access information located in another part. This technique keeps the pieces of the program isolated from each other, which reduces errors and makes each piece easier to understand. Abstraction focuses on the external view-the way something behaves and the way we interact with it. Information hiding is a design feature that gives rise to the abstractions that make something easier to work with. Information hiding and abstraction arc two sides of the same coin. Abstract art, as the name implies, is another example of abstraction. An abstract painting represe111s something but doesn't get bogged down in the details of reality. Consider the painting shown in , cnricled Nude Descwding a Staircase. You can see only the basic hint of the woman and the staircase, because the artist is not interested in the details of exactly how the woman or the staircase loo ks. Those details are irrelevant to the effect the artist is trying to create. In fact, the realistic details would gel in the way of the issues that the artist thinks are important. Abstraction is the key to computing. The layers or a computing system embody the idea of abstraction. And abstractions keep appearing within individual layers in various ways as well. In fa ct, abstraction FIGURE 1.3 Marcel Duchamp discussing his abstract painting can be seen throughout the entire evoluNude Descending a Staircase tion of computing systems, which we explort~ in the nexl section. Information hid ing A technique for isolating program pieces by eliminating the ability for one 9 7.2 The History of Computing 1 2 The History of Computing The historica l fo undation of computing goes a lo ng way toward explaining why computing systems today are designed as they are. Think of this sectio n as a story w hose characters an d event s have led to the place we are now and for m the fo unda tion of the exciting future to come. We exami ne th e history of comput ing hardware an d software separarely because each has its own impact on how com puting system s evolved into th e layered model we use as the outline for this book. This histo ry is wrillcn as a narrative, with no intent to forma ll y define the concepts discussed. In subsequent chapters, we return to th ese concepts and explore th e m in more deta il. A Brief History of Computing Hardware The devices that assist humans in various forms of compu tation have the ir roots in the a ncie n t past and have continued to evolve until th e present da y. Let's take a brief tour through th e history o f computing hardware. Early History Many people believe that Stonehenge, the famou s collection of rock m o noli ths in Great Britain, is an ea rly fo rm of a calendar o r astrological calcula tor. The abacus, wh ich appeared in the six teenth century nc, was developed as an inst rument to record numeric values and on which a huma n can pe rform basic a rithmetic. In the middle of the seventeenth century, Blaise Pascal, a French mathematician, built and sold gear-driven mechanical mach in es, which perfo rme<l whole -number addition a nd s ubtra ctio n . Later in th e seve nteenth century, a German mathematician, GoLtfried Wilhelm van Leibniz, built the firs t mechan ica l device designed to do all four who le-n umber o pe rations: addition, subtract ion, mu lti plication, and division. Unfortunatel y, the state of mecha nica l gears and levers at that time was such that th e Leibniz machine was not very re liable. In th e late e ig hteenth century, Joseph Jacqu ard developed what became known as Jacquard 's loom, used for weaving cloth . The loom used a series of cards with holes punched in them to specify the use of specific colored thread and therefore dictate the desig n that was woven into the cloth. Although not a computing device, Jacquard's loom was the first to make use of an importa nt form of input : the punched ca rcl. "Who can foresee the consequences of such an invention? The Analytical Engine weaves algebraic patterns just as the Jacquard loom weaves flowers and leaves. The engine might compose elaborate and scientific pieces of music of any degree of complexity o r ext ent. " -Ada. Countess of Lovelace, 1843' 10 Chapter 1: The Big Picture Stonehenge, a Neolithic sto ne stru cture that rises majestically our of the Salisbury Plain in England, has fascinated humans for centuries. It is beUeved that Sto ne henge was erected over several centuries beginning in about 2 180 ac. Its purpose is still a mystery, although theories abound. At the summe r solstice, the rising sun appea rs behind one of the main stones, giving the illusion that the sun is balancing on the stone. This has led to the early theory that Stonehenge was a temple. Another theory, first suggested in th e middle of the twentieth century. is that Stonehenge cou ld have been used as an astronom ical calendar, marking lunar and solar a lignments. Yet a third theory is that Stonehenge was used to pre'""•.t11rdb!61ol1111riitoct diet eclipses. The latest research now shows that Stonehenge was intended for and used as a cernetery. 3 Human remai ns, from about 3000 ec until 2500 ec when the first large stones were raised, have been found. Regardless of w hy it was built, there is a mystical quality about the place that defies exp la na tion. It wasn' t until the nineteenth century that the ne xt major step was taken, this time by a British mathe m atician. Charles Babbage designed w hat he called his analytical engine. His design was too complex for him to build with the techno logy of his day, so it was never implemented . His visio n. however, included many of the important components of toda y's computers. Babbage's design was the fi rst to include a mem o ry so that intermediate values did not have to be reentered . His design also included the input of both numbers and m echanical steps, makin g use of punched cards sim ilar to those used in Jacqu ard's loom. Ada Au gusta, Countess of Lovelace, was a very roman tic figure in th e history of computing. Ada, th e daughter of Lord Byron (the English poer) , was a skilled mathe m atician. She becam e inte rested in Babbage's work on the a nalytical e ngine and extended his ideas (as well as correcting some of his erro rs). Ada is cred ited wi th being the first progra mme r. The con cept of the loop-a series of instru ctio ns that repeat- is attributed 10 her. The prog ra mming language Ada, used largely by the U.S. De panme tll of Defense. is named for h er. D uring the later part of the nineteenth cen tury and the beginn ing of the twentieth century, computin g ad vances were made rap idl y. William Burroughs produced and sold a mechanical adding m achine. Dr. Herman Hollerith deve loped the first e lectro-mechanical tabula to r, w hich read informa tion from a punched card . His device revolutionized th e cen sus 11 1.2 The History of Computing taken every ten years in the United States. Ho llerith later formed a company known today as IBM. In 1936. a theoretical development took place that had nothing to do with hardware per sc but profoundly influenced the field of computer science. Alan M. 1\tring. another British mathematician. invented an abstract mathematical model called a Turing machine, laying the foundation for a major area of comp uting theory. The most prestigious award given in computer science (equivalent to the Fielding Medal in mathematics or a Nobel Prize in other sciences) is the 1\tring Award, named for Alan 1\1ring. A recent Broadway play deals with his life. Analysis of the capabilities of Turing machines is a part of the theoretical studies of all computer science students. In the mid to late 1930s, work on building a comput ing machine continued around the world. In 1937, George Stibitz constructed a I -bit binary adder usi ng relays. (See Chapter 4.) Later that year, Claude E. Shannon published a paper about implementing symbolic logic using relays. In 1938, Konrad Zuse of Berlin built th e first mechanical binary programmable computer. (See biography of Konrad Zuse in Chapter 6.) By the outbreak of World War II, several general-purpose computers were under design and con st ruction. In London in 1943, Thomas Flowers built the Colossus, considered by man y to be the first a ll-programmable electronic digital computer ( ). In 1944, the IBM Automatic Sequ<:nce Controll ed Calcu lator was given to Harvard; it was subsequen tly known as che Harvard Marki. The ENIAC, pictured in . was unveiled in 1946. Joh n von Neumann. who had served as a consultant on the ENJAC project, started work on another machine known as EDVAC, which was completed in 1950. In 1951 , the first commercia l computer, UNIVAC I, was delivered to the U.S. Bureau of the Census. The UNIVAC I was the first computer used to predict the outcome of a presidential election. ~ The early history that began with the abacus ended with the delivery of the UNIVAC I. With the building of that machine, the dream of a device that could rapid ly manipulate numbers was rea lized; the search was ended. Or was it? Some experts predicted at that time that a small number of computers wou ld be able to handle the computational needs of mankind. FIGURE 1.4 The Colossus, the first all-programmable digital computer 12 Chapter 1 · The Big Picture What they didn' t rea lize was that the ability to perform fast calculations on large amounts of dara would radica lly change the very nature of fields such as ma thematics, physics, engineering, and economics. Th at is, computers made those experts' assessments of what needed to be calculated entirely invalid. 5 After 195 L the story becomes one of the ever-expand ing use of computers to solve problems in all a reas. From chat point, the search has focused not only on building faster, bigger devices, but a lso on developing tools that allow us to use these devices more productively. The history of computing ha rdware from th is FIGURE 1.5 The ENIAC, a World War II-era computer Cwr,;yo/U Ir~ It took about 4000 years to fully reduce th reedimensional tokens to written signs. It all began abou t 7500 BC, w hen (a r mers made counters of clay in a dozen shapes to help keep track of their goods. For exa mple, a cone stood for a small measu re of gra in, a sphere for a large measure of grain, and a cylinder for an a nima l. Fou r small measures of grain were represented by fo ur cones. Approximately 8000 of these tokens have been found fro m Pa lestine, Anatolia, Syria, Mesopotamia, and Ira n. Approximately 3500 ec, a fter the rise of the city-states, administrators started using clay balls as envelopes to hold th e tokens. Some of these envelopes bore impressions of the tokens they contained. The next step occurred be tween 3300 and 3200 ac, when record keepers started just using the impression of the tokens on clay balls, dispensing w ith the tokens themselves. Thu s it took approximately 4000 years 10 reduce three-dimensional tokens lo written signs. Around 3 100 BC, styluses were used to draw the tokens rathe r than impressing the tokens on the tables. This change led to the breaking of the one-to-one correspondence between symbol and object. Ten ja rs of oil were represemed by a jar of oil and a sym bol fo r ten. New signs were not created to express abstract numbers, but old signs took on new meaning. For example, the cone sign, fo rmerly represent ing a small measure of gra in, became the symbol for "l." and the sph ere (a large measure of grain) came to mean "l O." Now 33 jars of oil could be represented by JO+ 10 + 10 + I + I + land the symbol for "oil." Once abstract numerals were created, the sign s for goods and the signs for n umbers cou ld evolve in different ways. Thus writing was de ri ved from co unting. 6 13 1.2 The History of Computing point on is categorized into several "generatio ns" based on the technology they employed. First Generation (1951- 1959) Commercial compu te rs in the fi rst generati o n (fro m approx imate ly 195 1 to 1959) were bu ilt using vacuum rubes to store information. A vacuum tube, shown in , genera ted a great deal of heat a nd was not very reliable. The machines that used them req uired heavy-duty air cond ition ing a nd freq uent maintenance. The y also required very large, specia ll y built rooms. The primary m em o ry device of this first generation of computers was a magnetic drum that rotated under a read/writ e head. When the memory cell that was being accessed rotated under the read/write head, the data was written to or read from thar place. The input device was a card reader that read the holes punched in an IBM card (a descendant of th e Ho llerith ca rd). The output device was either a punched card o r a line printer. By the end of this genera tion, magnetic tape drives had been developed that were much faster than card readers. Magne tic tapes are sequential storage devices, m ea ning that th e da ta on the tape m ust be accessed one after another in a linear fas hion. Storage devices external to the computer memory a re ca lied m1xilit11y storage devices. The m agne ti c tape was the first of these devices. Collective ly, input devices, output devices, and auxiliary sco rage devices became known as peripheral devices. FIGURE 1.6 A vacuum tube Second Generation (1959-1965) The advent of the transistor (for which John Bardeen, Walter H. Bra ttain, and William B. Shockley won a obel Prize) ushered in the second ge ne ra tion of comml'rcial computers. The transistor replaced the vacuum tube as the ma in component in th e ha rd ware. The transistor, as shown in , was smaller, more reliable, fas ter, more durable, and cheaper. The second gene ration also witnessed the advent of im mediate access memory. When accessing information from a drum, the CPU had to wai t for th e pro per place to rotate und er th e read/write head. The second generatio n used memory made from 111ag11etic cores, tin y doughnut-shaped devices, l'ach capable of sto ring one bit o f information. These cores were strun g together with wires to form cells, a nd cells were com bined into a memory unit. Because th e device was motion less a nd was accessed e lectronicall y, info rmat io n was available instan tl y. 111111111111111111111111 10_ _1_ ~1JLL_ FIG URE 1.7 A t ransistor, which replaced the vacuum t ube ,, t "' \\, 14 Chapter 1. The Big Pictu re On December 10, 18 15 (the same year that George Boole was born ), a daughter- Augusta Ada Byron-was born to Anna Isabella (An nabella) Byron and George Gordon, Lord Byron. At that time in England, Byron's fam e derived not on ly from rus poetry buc also from his wild and scandalo us behavior. The marriage was strained from the beginning, and Annabella left Byron short ly a fter Ada's birth. By April of 18 16, the two had signed sepa ration papers. Byron left England, never to return. Throughout th e rest of his life he regretted tha t he was unable to see his daughter. At o ne point he wrote of her, I see 1hee not. I hear thee not. But none can be so 1vrapt in thee. Before he died in Greece, at age 36, he exclaimed, 011 my poor dear child! My dear Ada! My God, could I but have seen her! Meanwhile, Annabella, w ho even tua ll y was ro become a baroness in h er o wn right , and who was educated as both a mathematician and a poet, carri ed on with Ada's u pbringing an d ed ucatio n . An nabe lla gave Ada h e r first instruction in mathematics, but it soon became clear that Ada was gifted in the subject and sho uld receive more extensive tutorin g. Ada rece ived further training fro m Augu stus DeMorgan, today fa m o us for o ne of the basic theorems of Boolean a lgebra. By age eight, Ada had demonstrated an interest in mechanica l devices and was building de tailed m odel boa ts. When she was 18, Ada visited the Mechanics Institute to hea r Dr. Dionysius La rdn er's lectures on the Difference Engine, a mechan ical calculatin g machine being built by Charles Babbage. She becam e so inte rested in the device tha t she arranged to be introduced to Babbage. It was said that, upo n seeing Babbage's machine, Ada was the on ly person in the room to understand immediately how it worked and to recognize its significance. Ada and Charles Babbage becam e lifelong friends. She worked with him, helping to document his designs, translating writings about his work, and developing programs for his machines. In fact, Ada today is recognized as the first com puter programmer in histo ry. When Babbage designed his Ana lytical Engine, Ada fo resaw that it could go beyond arithme tic com putatio ns and become a gen eral manipu lator o f symbols, thus ha ving far-reach ing capabilities. She even suggested that such a de vice eventua ll y cou ld be programmed with ru les of harmony a nd composit ion so that it could produ ce "scienti fic" music. In effect, Ada foresaw the field of artificial in tellige nce m o re than 150 yea rs ago. In 1842, Babbage gave a series of lectures in Turin , Italy, o n his Analytical Engine . One of the a ttendees was Luigi Mcnabrea, who was so impressed that h e wrote a n account of Babbage 's lectu res. At age 27, Ada decided to transla te the account into En glish. w ith the intent to a dd a few of he r own notes abou t the machine. ln the e nd, her notes were twice as long as the o riginal material, and th e document, 15 1.2 The History of Computing Ada Lovelace (continued) "The Skecch of the Analytical Engine," became the definitive work on the subject. IL is obvious from Ada's letters that her "notes" were entirely h er own and that Babbage was acting as a sometimes unappreciated editor. At one point, Ada wrote to him, I am much annoyed at your having nltered my Note. You know I am nlways willing to make any required alterations myself but that I cannot endure another person to meddle with my sentences. Ada gained the title "Countess o [ Lovelace" when she married Lord William Lovelace. The couple had three children, whose upbringing was left to Ada's mother while Ada pursued her work in mathemacics. Her husband was supportive of her work, bu t for a woman o f chat day such beha vior was considered almost as scanda lous as some of her father's exploits. Ada died in 1852, just one year before a working Difference Engine was built in Sweden [rom one of Babbage's designs. Like he r fath er. Ada lived only to age 36, and even though they led very different lives. she undoubtedly admired him and took inspiration from his unconventional and rebellious nature. ln the end, Ada asked to be buried beside him at the family's estate. The 11wgneticdisk, a new auxiliary storage device, was also developed during the second computer hardware generation. The magnetic disk is faster than magne tic tape because each data item can be accessed directly by referring to its location o n the disk. Un li ke a tape, which cannot access a piece of data without accessing everything on the cape that comes before it, a disk is organized so thac each piece of data has its own location identifier, called an address. The read/write heads of a magnetic disk can be sent directly to the specific location on the disk where the desired information is stored. Third Generation (1965-1971) In the second generation, transistors and other components for che computer were assembled by hand on primed circuit boards. The third genera tion was characterized by integrated circuits (!Cs), solid pieces of silicon that comaincd the transistors, other components, and their connections. Integrated circuits were much smaller. cheaper, faster, and more reliable 16 Chapter 1: The Big Picture than printed circu it boards. Gordon Moore, one of the co-founders of Intel, n oted tha t from the time of the inve ntion of the IC, the number of circuits tha1 could be placed on a single integrated circuit was doubling each yea r. Th is observation became known as Moore's la1v.K Transistors also were used for memory construction, where each tra nsistor represented one bit of information. Integrated-circuit technology a llowed memory boards to be built u sing transistors. Auxiliary storage devices were still n eeded becau se tra nsistor memory was volatile; that is, the informatio n we nt away w h en the power was turned off. The terminal, an inp u t/o utp ut device with a keyboard and screen, was int rodu ced during this generation . The keyboard gave the user direct access to the computer, an d the screen provided a n immediate response. Fourth Generation (1971 - ?} Large-scale integration cha racterizes th e fou rth generation. From several l Scientists build first nanotube computer Scientists are examining the possibility of using carbon nanotubes, seamless cylinders of ultrapure carbon, as a basis for future computers. As electrical conduction speeds of conventional silicon transistors begin to reach the limits of the technology. the search is on for replacements that are faster t han silicon. In 2013, scientists at Stanford University built a working, although primitive. prototype of a computer using nanotube transistors made with these unusual carbon fibers.9 thousand tra nsistors on a silicon chip in the early 1970s, we ha d moved to a whole microcomputer on a ch ip by the middle of this decade. Ma in memory devices are stil l made a lmost exclusively out of chip technology. Over the previous 40 yea rs, each generatio n of compu ter hardware had becom e more powerfu l in a smaller package a t lower cost. Moore's la w was modifi ed to say that chip density was do ubling every 18 m o nths. By the late 1970s, the phrase personal computer (PC) had entered the vocabu lar y. Microcompu ters had become so cheap that a lmost anyone could have one, a nd a generation of kids grew u p playing Pac-Man. The fourth generation fo u nd some n ew names en tering the commercial market. Apple, Tandy/Radio Shack, Atari. Commodore, a nd Sun joined the big com pa n ies of earlie r generations-IBM, Remington Ra nd, NCR, DEC (D igita l Equi pment Corporation), Hewlett-Packard, Cont rol Da ta, a nd Burroug hs. The best-known success sto ry o f the pe rsona l compute r n:vulution is tha t o f Ap ple. Steve Wozn ia k, an engineer, and Steve Jobs, a high school student, created a personal compu ter kit and marketed it out o f a garage. This was the beginning of Apple Computer, a multi billion-dollar company. The IBM PC was introduced in 198 1 and was soon followed by compatible mach ines man u factu red by many other companies. For example, Dell and Compaq were s uccessfu l in maki ng PCs tha t were compatible with IBM PCs. Apple int roduced it s ve ry popu lar Macintosh microcom puter line in 1984. In the mid- J 980s, la rger, more powerful machines were created; they were referred to as workstations. Workstations were generally mea nt for 17 1.2 The History of Computing business, not persona l. use. The idea was for each employee to have his or her own workstation on the desktop. These workstations were connected by cables, or networked, so that they could interact with one another. Workstations were made more powerful by the introduction of the RISC (reduced-instruction-set computer) arch itecture. Each compu ter was designed to understa nd a set o f instru ctions, called its machine language. Conventiona l machines such as the IBM 370/ 168 had an instruction set containing more than 200 instructions. Instructions were fast and memo ry access was slow, so specia lized in structions made sense. As m e mory access got in crea singly faster, using a reduced set of ins1ructions became attractive. Sun Microsystems introduced a workstation w ith a RlSC chip in L987. Its enduring popularity proved the feasibi lit y of the RISC chip. These workstations were often called UNIX workstations because they used the UNIX operating system. Because computers arc sti ll being made using circu it boards, we cannot mark the end of this genera tion. Howe ver, severa l things have occurred that so dramatically affected how we use machines that they certainly have ushered in a new era. Moore's law was once aga in restated in the following form: ucompute rs will either double in power at the same price or halve in cost for th e same power every 18 months." 10 Parallel Computing Although computers that use a single primary processing unit contin ue to flourish. radically new machine architectures began appea ring in th e late 1980s. Computers that use these paral/e/ architecuires rel y on a set of interconnected central processing units. One class of parallel machines is organized so th at th e processors all share the same memory unit. In a no Lher class o f machines, each central processor has its own local memory and communicates with the o thers over a very fast internal net work. Parallel architectures offer severa l ways ro increase the speed of executi o n . For example, a given step in a program can be separated into multiple pieces, and Lhose pieces can be executed simultaneously on several individual processors. These machines are called SIMD (single-instru ction, multiple-data -stream) computers. A second class of m achines can work on different pans o f a progra m simultaneously. These machines a re called MIMD (m ult iple-instruction, mu ltiple-data-stream) compu te rs. The potemial of hundreds or even thousa nds of processors combined in one machine is enormous, and the cha llenge of prog ramming for such machines is equally daunting. Software designed for paralld m achines is From a garage to the FortuneSOO Boyhood friends Steve Jobs and Steve Wozniak sold their Volkswagen van and programmable calculator, respectively, to raise the money to finance their new computer company. Their first sale was 50 Apple Is, the computer that they had designed and built in a garage. In six short years Apple was listed in the Fortune 500. :t Chapter 1. The Big Picture d ifferent rrom software designed for sequential machines. Programmers have to rethink the ways in wh ich they ap proach problem solving a nd programming to explo it parallelism. Networking "So we went to Atari and said, 'Hey, we've got this amazing thing, even built with some of your parts, and what do you think about funding us? Or we'll give it to you. We just want to do it. Pay our salary, we'll come work for you.' And they said, 'No.' So then we went to Hewlett-Packard, and they said, 'Hey, we don 't need you. You haven't got through college yet.' " ' 1 In the 1980s, the concept o r a large machine with many users gave way to a network of smaller machines connected so that they can share resources such as printers, software, and da ta. Ethernet, invented by Robert Metca lfe and David Boggs in 1973, used a chea p coaxial cable to connect the machin es and a set o f protocols to allow the machines to communicate with one another. By l 979, DEC, Intel. and Xerox joined to establish Ethernet as a standard. Workstations were designed for networking, but ne tworking personal computers didn ' t become practical until a more advanced Intel chip was in troduced in 1985. By l 989, Novell's etware connected PCs together with a file server, a PC with generous mass storage and good input/output capability. Placing da ta and office au tomation software o n the server rather than each PC having its own copy allowed for a measure of central control wh ile giving each machine a m easu re of autonomy. Workstations or personal computers networked together became known as LANs (local area networks). The Internet as we know it today is desce nded from the AHPANET, a government-sponsored network begun in the late 1960s, which originally consisted of 11 nod es concentrated mainly in the Los Angeles and Boston areas. Like ARPANET and LANs, the Internet uses packet switching, a way for m essages to share lines. The Internet, h owever, is made up o f many different networks across th e world that communicate by using a common protocol, TCP/JP (Transmission Con trol Protoco l/ Internet Protoco l). Paul E. Ceruzzi, in A Histo1y of Modern Computing, comments on the re lationship between Ethernet and the Inte rnet: If the Internet of th e 1990s became the Information Superhighway, then Ethernet became the equally important network ol local roads to feed it. As a descendent of ARPA research, the global networks we now call the Internet came into existence before the local Ethernet was invented at Xerox. But Ethernet tran sfo rmed the nature of oCfice and personal computing before the Internet had a significant effect.'2 19 1.2 The History of Computing A Brief History of Computing Software Computer History The hardware of a computer can be turned on, but it docs nothing u111il it is directed ro do so by the programs that make up the comp uter's software. The manner in which software evolved is crucia l to understanding how software works in a modern computing system. First-Generation Software ( 1951-1959) The first programs were written using machine language, the instructions builr into the electrical circuitry of a particular computer. Even the small task of adding two numbers together used three instructions written in binaiy ( Is and Os), and the programmer had to remember which combination of binary digits meant what. Programmers using machine language had to be very good with numbers and very detail oriented. It's not surprising that the first programmers were mathematicians and engineers. Nevertheless, progra mming in machine language is both time-consuming and prone to errors. Because writing in machine code is so tedious, some programmers took the time to develop tools to help with the programming process. Thus the first artificial programming languages were developed. These languages, called assembly languages, used mnemonic codes to represent each machinelang uage instruction. Because every program that is executed on a computer eventually must be in the form o f the computer's machine language, the developers of assembly language also created software translators to translate programs written in assembly language into machine code. A program called an assembler reads each of the program's instructions in mnemonic form and translates it into the machine-language equ ivalent. These mnemonics are abbreviated and sometimes difficult to read, but the y are much easier to use than lo ng strings of binary digits. The programmers who wrote these tools to make programming easier for others were the first systems programmers. So, even in first -generation software, there was the division between those programmers who wrote tools and those programm ers w ho used th e tools. The assembly language acted as a buffer between the programmer and the machine hardware. See . Sometimes, whe n efficient code is esse111iaL programs today may be written in assembly language. Chapter 6 explores an example of machine code and a correspond ing assembly language in detail. FIGURE 1.s Museum The first computer museum opened in 1979, located in the corporate headquarters of Digital Equipment Corporation (DEC) in Marlborough, Massachusetts. After several incarnations, in 2005 the Computer History Museum moved into a permanent home in Mountain View, California, in the heart of Silicon Valley. 13 Layers of languages at the end of the first generation ? 20 Chapter 1: The Big Picture Second-Generation Software (1959-1965) As hardware became more powerful, mo re powerful tools were needed to use it effectively. Assembly languages certain ly presented a step in the right direction, but the programme r still was forced to thi nk in terms o f individual machine instructions. The second generation saw m ore powerful languages developed. These high-level languages allowed the programmer to write instructions using more English-like statements. Two of the languages developed during the second generation a re still used today: FORTRAN (a langu age designed for nume rica l applica tions) and COBOL (a la nguage designed for business app lications). FORTRAN and COBOL deve loped quite differe ntly. FORTRAN started out as a simple language and grew as add itional features were added to it over the years. In cont ras t, COBOL was des igned first and then implemented. ll h as changed little over time. Ano ther language that was designed during this period tha t remains in use today is Lisp. Lisp differs ma rked ly fro m FORTRAN and COBO L and was n ot widely accepted . lt was used mainly in artificial intelligence applications and research. Indeed, dialects o f Lisp are among the la nguages of choice today in artificia l intelligence. Scheme, a dia lect of Lisp, is used a t some schools as an introductory program ming language . The introductio n of high-level languages provided a veh icle for running the same program on more than one compute r. Each high- level language has a translating program tha t goes with it, a program that takes sta tements wri tten in the h igh-level language and converts them to the equiva lent machine-code instructions. In the ea rliest days, the high -level la nguage stateme nts were often translated into an assembly language, and Lh en the assembly-language statements were translated into machine code. A program w ritten in FORTRAN or COBOL can be translated and run on any machine that has a translating p rogram called a compiler. At the end o[ the second ge neration, the role of the systems programmer was becoming mo re well-de fined. Systems programmers wro te tools like assemblers and compilers; those people who used the tools lO write proAssembly language Machine language gra m s were ca lled applications programmers. The application s program mer was becoming even more in sula ted from rhe computer hardware as the software surroundi ng the ha rdware became more sophisticated. See FIGURE 1.9 Layers of language at the end of the second generation 21 1.2 The History of Computing Third-Generation Software ( 1965- 1971) During the third generation of commercial computers, it became apparent that the human was slowing down the computing process. Computers were sitting idle while waiting for the computer opera10r to prepa re the next job. The solution was to put the computer resources under the control of the computer-that is, 10 write a program that would determine which programs were run when. This kind of progra m is called an operating system. During the first two computer software generations, utility programs had been written to handle often-needed tasks. Loaders loaded programs into memory and linkers linked pieces of large programs toge ther. In the third generation, these utility programs were refined and put under the direction of the operating system. This group of utility programs, the operating system , and the language translators {assemblers and compilers) became known as systems software. The introduction of computer terminals as input/outp lll devices gave users ready access to computers, and advances in systems software gave machines the ability to work much faster. However, inputting and outputting data from keyboards and screens was a slow process, much slower than carrying out instructions in memory. The problem was how to make better use o f the machine's greater capabilities and speed. The solution was time sharing-many diffe rent users, each at a terminal. communicating {inputting and outputting) with a single computer all at the sa me time. Controlling this process was an operating system that organized and scheduled the different jobs. For the use r, time sharing is much like havi ng his or her own machine. Each user is assigned a small slice of cen tra l processing time and then is put on hold wh ile another user is serviced. Users generally aren't even aware that there arc other users. Howeve r, if too many people try 10 use the system at the same time, there can be a noticeable wait for a job to be completed. As pan of the third ge nera tion, gene ra l-pu rpose applicat ion programs were being written. One example was the Statistical Package for the Social Sciences (SPSS), which was written in FORTRAN. SPSS h ad a special language, and users wrote instructions in that language as input 10 the program. This language allowed the u ser, who was often 1101 a programmer, to describe some data and 1h e statistics to be computed on that data. At the beginning o f the computer era, the compu ter user and the programmer were the sa me person. By the e nd of the first generation, 22 Chapter 1• The Big Picture programmers had emerged who wrote tools for other programmers to use, giving rise Lo the distinction between systems programmers and applications programmers. However, the programmer was still the user. In the third generation, systems programmers we re writing programssofrware tools-for others to use. Suddenly, there were computer users who were not programmers in the traditional sense. The separaLion beLween the user and the hardware was growing wider. The hardware had become an even smaller part of the picture. A compu ter system-a combination of hardware, softwa re, and the data managed by them-h ad emerged. See . Allhough the layers of languages kept getting deeper, programmers continued (and still con tinue) to use some of the very inner layers. lf a small segment of code musL run as qu ickly as possible and Lake up as few memory locations as possible, it may still be programmed in an assembl y language or even machine code. Fourth Generation (1971-1989) The 1970s saw the introduction of better programmi ng techniq ues called structured programming, a logical. disciplined approach to programming. The languages Pascal and Modula-2 were buih on the principles of structured programming. BASIC, a language inLroduced for Lhird-generation machines, was refined and upgraded to more structured versions. C, a language that a llows the user ro intersperse assembly-language statemen ts in a high-level program. was also introduced. C++, a structured language ...... Systems software High-level languages Assembly I languages FIGURE 1.1 O The layers of software surrounding the hardware continue to grow 1.2 The History of Computing that allows the user access to low-level state m e nts as well, became the language of choice in the industry. Better and more powerful operating systems were being developed, too. UNIX, developed at AT&TT~ 1 as a research tool, has become sta ndard in many un ive rsity senings. PC-DOS, develo ped for the IBM PC. and MS-DOS. developed for PC compatibles, became standards for personal computers. Apple capitalized o n research done at Xerox PARC by incorporating a mouse and point-a nd-click graphica l interface into the operating system for the Macintosh, which ushe red in an impo rtant cha nge to computer-user inte raction on personal compu te rs. High-qua lit y, rea sonabl y priced applica tions softwa re packages beca me available at ne ighbo rh ood stores. These programs allow the user with no computer experience to perform a specific task. Three typical kinds of applica tion packages are spreadsheets, word processors, and database 111anage111eut systems. Lotu s l-2-3 wcls the first commerciall y successful spreadsheet that allowed a novice user to enter and analyze all ki nds of data. WordPerfect was one of the first word processors, and dBase IV was a system that let the user sto re, organize. and retrieve da ta. Fifth Generation ( 1990-Present) The fifth generation is notable for three major events: the rise of Microsoft• as a do minant player in computer software. object-orie nted design and prog ramming, and the Wo rld Wide Web. Microsoft 's Windows operating system emerged as a m ajor force in the PC m a rket during thi s period. Altho ug h WordPerfect continu ed to im prove, Microsoft Wo rd became th e most used word processing program . In the mid- l 990s. w o rd processors, spreadsheet programs, database programs, and o the r a pplication programs were bundled together into supe r packages called office suites. Object-oriented design became the design of choice for large programming projects. Whe reas structured design is based o n a hie rarch y of tasks, object-oriented design is based o n a hierarchy of data objects. J avarn. a language des igned by Sun Microsystems for object-ori ented program ming. began to rival C++. In 1990, Tim Bcrners-Lee, a British researche r a t the CE RN ph ysics lab in Geneva. Switzerland, crea ted a set of technica l rules fo r what he hoped wou ld be a uni versal Intern et document cemer ca lled th e World Wide Web. Alo ng w ith these rules, h e created HTML, a lang uage fo r formatting documents. a nd a rudimen tary, text-only browser; a prog ra m that allows a user to access information from websites worldwide. rn 1993, Ma rc Andrecse n a nd Eric Bina released Mosaic, the fir t gra phics-capable Former Microsoft executive John Wood left his job to start a nonprofit that builds schools and libraries in developing countries. He said, " Education is the ticket out of poverty, and it produces better family health and better treatment of women. Every day, 250 million kids worldwide wake up with no school to go to. Two-thirds of them are g irls." By 2013, Room to Read had built 1752 schools and 16,060 libraries."·" 24 Chapter 1 · The Big Picture FIGURE 1.11 brows<.:r. To quote Newsweek: "Mosa ic just may have been the most importa nt computer applicati on evcr." 16 The re were now two giants in the browser market: Netscape Navigator (derived from Mosaic) and Microsoft's Internet Explorer (IE) . Microsort bundled IE with its Windows operating system, which made JE the winner in the browser wars. This bundling led to a monopoly lawsuit filed by the U.S. government, the 2001 settlement of w hich required Microsoft to be more open with its competitors. Netscape's future became uncertain a fter America Online purchased it in 1998. AOL stopped supporting Netscape products ten years la ter. Mozilla Firdox. a web browser that retained some o f the flavor of Mosaic, was released in November 2004. As of 2014, Firefox had captured 25% of the browser market. Although the Internet had been around for decades, the World Wide Web made it easy to use the Internet to share information around the world (see ). Around 2002, the Web began changing. Social networking sites such as Facebook a nd Twitter have become w ildly popular. Online blogging has turned an yone and everyone into an author or social criti c. User-generated and -edited content characte rizes these new websites. For example, Wikipedia is an online encyclopedia for which anyone can en ter or edit content. The term Web 2.0 has been used by some to describe these emerging sites and uses. The fifth gen eration must be characterized most of all by the changing profile of the user. The fi rst user was the programmer who wrote programs to solve specific proble m s-his or her own or someone else's. Then rh e systems programmer emerged , who wrote more and more complex tools for other program me rs. By the early 1970s, applications programmers were using these complex tools to write applications programs for nonprogra mmers to use. With the advent of the personal computer, computer games, educational programs. and user-friendly software packages, many people became computer users. With the birth and expansion of the Wo rld Wide Web, web surfing has become the recreation of choice, so even more people h ave becom e compu te r users. Sharing information on the World Wide Web The user is a first-grade ch ild learning 25 1.2 The History of Computing to read, a teenager downloading music, a college student writing a paper, a homemaker planning a budget. and a banker looking up a customer's loan record. The user is a ll of us. ln our brief history of hardware and software, we have focused our attention on traditional computers and computing systems. Paralleling this history is the growing use of integrated circuits, or chips, to run or regulate everything from toasters to cars to intensive care monitors to satellit es. Such computing technology is ca lled an embedded system. Although these chips arc not actually computers in the sense that we are going to study in this book, they arc certainly a product of the technology revolution of the last 5 5 years. Predictions We end this brief history of computing with a few predictions abou t computers that didn't come true: 11- 1•1 "I think there is a world market for maybe five co mput ers."Thomas Watson, chair of IBM, 1943. "Where . .. the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in t he future may have only LOOO vacu um tubes and weigh only 1.5 tons."-Popular Mechanics, 1949. "I have traveled the le ngt h and breadth of this country and talked with the best people, and I can assure you that data processing is a fa d that won't last out the year."-The editor in charge o f business books for Prentice Hall, 1957. "But what ... is it good for?"-Engineer at the Advanced Computing Systems division of IBM, commenting on the microchip, 1968. "There is no reason anyone would want a computer in their home."-Ken Olsen, president, chairman, and founder of Digita l Equipment Corporation, 1977. "$ 100 m illion is way too much to pay for Microsoft."- IBM, l 982. "I predict the Internet ... will go spectacularly supernova and in 1996 catastrophically collapsc."-Bob Metcalfe, 3Com fo under and inventor, 1995. "Folks, the Mac platform is through - totally."-John C. Dvorak, PC Ma.qazine, I 998. Chapter 1: The Big Picture 1.3 Computing as a Tool and a Discipline In the previous section on the history of computer software, we pointed out the ever-changing role of the user. At the end of the first generation. users were split into two groups: systems programmers, who developed tools to make programming easier, and applications programmers, who used those tools. Later, applications programmers built large domain-specific programs such as statistical packages, word processors, s11readshects, imelligent browsers. virtual environments, and medical diagnosis applications on top of the traditional language tools. These application programs were, in turn, used by practitioners with no compllter background. So who is using the computer as a tool? Everyone, except for those people who are creating the tools for others. For these toolmakers, either computing is a discipline (low-level tools) or the discipline of computing has made their tools possible (applications built upon applications). A discipli11e is defined as a field of study. Peter Denning defines the dis cipline of computer science as "the body of knowledge and practices used by comput ing professionals in their work .... This discipline is a lso called computer science and engineering. computing, and info rma tics. " 20 He continues, "The body of knowledge of computing is frequently described as the systematic study of algorithmic processes that describe and transform information: their theory, analysis, design, efficiency, implementation, and application. The fundamental question underlying all of computing is. What can be (efficiently) automated?'' Denning states that each practitioner must be skilled in four areas: Algorithmic thinking, in which one is able to express problems in terms of step-by-step procedures to solve them Represemarion, in which one is able to store data in a way that ii can be processed efficiently Programming, in which one is able to combine algorithmic thinking and representation into computer software Design, in which the software serves a usefu l purpose A debate h as long raged about whether computing is a mathematical discipline, a scientific discipline, or an engineering discipline. Computing certainly has strong roots in mathematical logic. The theorems o( 1\1ring tell us that certain problems cannot be solved, Boolean algebra describes computer circuits, and numerical analysis plays a n important role in scientific computing. Scientific disciplines attempt to understand how their systems work. The natural sciences exist to "fill in the instruction book 1.3 Computing as a Tool and a Discipline that God forgot to leave us." 21 Thus computing is a scientific discipline. as we use them to build and cest m odels of natural phenomena. As we design and bu ild larger and larger computing systems, we are using tech niques from engineerin g. In 1989, a task force of computer science educators proposed a curriculum mode l that covered the subareas of computing from the th ree perspectives represent ed in o ur history: theory (ma thematics); experimen tal ion, called abstraction by computer scie ntists (sciences); and design (engince ring). 22 Theo1y refe rs to the building of conceptua l frameworks and notations fo r understa nd ing relationships amon g objects in a domain. Experi111e11tatio11 (abstract ion) refers to exploring models o f systems and architectures within different application domains and determining whether the models predict new behaviors. Design refers to con structing computer syste m s t h at support work in different application domains. Mt!:!!llM sh ows the topic areas out lined by the task force. Of th e nine subject topic areas, six relate to under tanding and building computing tools in general: Algorithms and Data Structures, Programming Languages, (Com pu ter) Architecture, Operating Systems, Software Methodology and Engineering, a n d Human-Computer Comm un ication. Not surp risingly, these are ca lled systems areas. Th ree of th e subareas relate to the compu ter's use as a tool: Database and In forma tion Retrieval. Artificia l Intelligence and Robocics, and Graph ics. Th ese areas are called applications areas. 1.1 Algorithms and Data Structures Programming Languages Architecture Operating Systems Software Methodology and Engineering Database and Information Retrieval Artificial Intelligence and Robotics Human-Computer Communication Graphics Chapter 1: The Big Picture l Computers go to college The first departments of computer science were established in 1962 at Purdue and Stanford Universities. The first PhD in computer science was awarded by the University of Pennsylvania in 1965. The first curriculum effort in computer science was published by the ACM in 1968. 23 Revised curriculum documents, published in 2001 , reorganized and ex panded the topic areas to a total of 14. Algorithms and Data Structun•s has been expandt>d and put under the title "Programming Fundamentals." With the rise of the Web, networks get their own category : Net-Centric Computing. Artificial Int elligence and Robotics has been expanded to include all Inte lligent Systems. Databases and In formation Retrieval are now called Informat ion Management. The new topics include Discrete Structures, an area of mathematics that is important to computing, and Algorithms a nd Complexity, the formal study of algorithms rather than the study of how to write them . These would be systems areas. Computational Science includes the application of numerical techniques and simu la tion to fie lds such as molecular dynamics, celestia l mechanics, economic forecasting, and bioinformatics. The last new topic is Social and Professional Issues, which relates to professionals in both systems and applications areas. This area is now called the Tenth Strand. We have more to say about this in the Ethical Issues sect ion . MtJ:!!jfW shows a listing of the topic areas as of 2001. The repo rt 1.2 Discrete Structures Programming Fundamentals Algorithms and Complexity Architecture and Organization Operating Systems Net-Centric Computing Programming Languages Human-Computer Interaction Graphics and Visual Computing Intelligent Systems Information Management Social and Professional Issues Software Engineering Computational Science 29 Summary "Computer Science Curriculum 2008: An Interim Revisio n of CS 2001," published in Dece mber 2008, leaves these 14 topic areas unch anged. Research is o ngoing in both systems a nd applica ti ons. System s re search produces better general tools; applications research produces better tools (or the domain-specific applications. There is no doubt that the rela tions hips be tween the people who inves tiga te compu tin g topics as a discipline d irectl y affect those who use comput ers as a tool. Computing research fuels the applica1ions people use daily. and rhe turn arou nd for 1he tech no logy is amazingly fast. This sym bio1ic relations hi p is more dynamic in computin g than in any o ther disci pline. In this book we ex plain, at an introductory level, the ideas underlying computing as a discipline. This boo k does not aim to make you a better user o f a computer, although it sho uld undoubtedl y have that side effect. Instead. we want you l o wa lk away with a 1horough kn owledge of how computer systems work, whe re they are now, anJ where they may go in th e Cuturc. For this reason, we examine bo th systems an d applica tions. SUMMARY This book is a broad stud y of computer syste ms. including the hardware 1hat makes up the devices, the softwa re programs executed by the machi ne, and th e da ta managed and manipulated by both. Com pu ting sys1ems can be divid ed inLo laye rs. and our o rganization of this book fo llows th ose la yers from the inside ou t. The history of computing reveals 1he roots fro m which modern compming systems grew. This history spans fo ur ge nerations, each characterized by th e componen1s used 10 build 1h e hardware and the software too ls developed to allow the programmer to make more prod uctive use of the hardware. These tools have formed layers of software around lhe hardware. Throughout th e rest of this book, we examine the different layers that make up a com puting sys1em, beginn ing with the informa tion layer and ending wit h the communica1 ion layer. Our goa l is to give you a n appreciat ion and understanding of all aspects o f co mputing systems. You m ay go on to stud y compu ter science in dep1h and contrib u te to the fut ure of co111pu1ing systems. Or yo u ma y go o n to be an applica tion specia list w ithin o ther discip lines, u sing the com pu ter as a tool. W hateve r your future ho lds, given how preva len1 compuring syste m s a re. a fun damc111al und ers1anding of how they wo rk is imperati ve. 30 Chapte1 1. The Big Picture ETHICAL ISSUES Digital Divide Over the past three decades. the dependence of U.S. society o n co mputer technology has increased d ramatically. At the beginning of the 21st century. it was estimated that 5 1 % of U.S. ho useholds had a personal computer and 42% had Inte rnet access. 24 By 2011, 75.6% of ho useholds had a computer and 7 l.7 % had Inte rn et access. These stat isti cs also shovv that 24 .4% still did 1101 have a compute r and 28.3 % did no t have Internet access. The te rm digital divide has com e to represent this disparity between Info rmatio n Age haves and have no ts. Altho ugh this ga p is narrowing, it is still of social concern. As groups, rural communities, minority households, low-income families, and people with disabilities do no t have the same levels of Internet access as m o re advantaged people. fn edu cationa l setti ngs. Web connections and the quantity and quality of computers vary g reatly across dem ographic regions. Programs su ch as the federally supported E-Rate Program, established in l 996 and funded by fees charged to companies that provide interstate and/or imerna tional telecommunications ser vices, respond to these inequalities by providing fin ancial disco ums to schools and libraries in need. In 2005, Nicholas Neg ro pon te, in collabo ration with MIT, laun ched the One Laptop per Ch ild (OLPC) program . Working from the philosophy that every child-even those in the most remote regions of the world-should have access to a computer, OLPC set out to produce a low -cost laptop fo r children who otherwise could not afford o ne . OLPC designed a basic laptop that sells for less than $200 and has a battery th at can be ch arged by human power. By 20 11 , mo re th an two m illio n ch ildren and teach e rs in 42 count ri es were using these XO laptops.25 The digita l divide e ncompasses an additional challenge that develo ping na tions mus t face. Without the necessary telecom munication infrastructures to support Internet access, emerging co un tries are a t a serious disadvantage. Thi s is reflected in statisti cs th at sh ow how Int e rne t access va ri es throughout the world. In 2012, the percentages of people who have Internet access per contine nt or region were l 5.6% in Africa, 27.5% in Asia, 40.2 % in the Middle Ease 42.9 % in Sourh America, 63.2 % in Europe, 67.6% in Australia, and 78.6% in Nort h America. The world figure is 34.3%; that is, 34.3% of people worldwide ha ve Intern et access. 26 Wi th the adve nt of smartpho nes. computer usage a nd Inte rnet access no lo nge r pa rallel each o ther. You no longer need a computer to be an Intern et user. A thought to po nder: Those withou t Internet access do not kno w what is happening around the world, and the world has no access 10 what they are thinking. They are in visible to the rest of the world, and the rest of the world is invisible to them. 31 Exercises Abst racti o n Compute r h ardware For Exercises 1- l 0, choose from th e following list of people. A. Leibniz B. Pascal C. Babbage D. Lovelace E. Hollerith F. Byron G. Turing H. Jacquard 1. What French mathematician built a nd sold the first gea r-d ri ven mechanical machin e tha t did addition and subtra ction? 2. Who built th e firsr mechanical machine that d id ad dition, s ubtract io n, multiplica tion. and division? 3. Who designed the first mechanical machine th a t included memory? 4. Who was conside red th e first program m er? 5. Who proposed tha t a punched card be used for co unting rhc cen sus? 6 . Who edited Babbage's work? Computer software Computing sys tem 7. 8. 9. I 0. Who was Ada Lovelace's fa th er? Who wou ld h ave been mentioned in th e book the Code Breakers? Who developed the concept of punc h ed holes used in weaving cloth? Who is associated w ith IBM ? For Exercises J l-2 3, match the h a rdwa re listed to th e appropriate generation. A. First B. Second C. Third 0. Fourth E. Fifth 11. Circuit boa rds 12. Tra nsistor 13. Magnecic core memo ry 14. Ca rd input/outpu t 15. Parallel com p uting 16. Magnetic drum 17. Magnetic ta pe drives 18. Integra ted circuits 19. Personal computer 20. Vacuum wbe 2 I. La rge -sca le integration 32 Chapter : The Big Picture 22. 23. Magnelic disk Networking For Exercises 24-38, match the software or software concepts listed to th e appropriate ge nera ti on. A. First B. Second C. Th ird D. Fou11h E. Fifth 24. Assemblers 25. FORTRAN 26 . Operating systems 27. Stru ctured programming 28. Time sharin g 29. HTML (for the Web) 30. Loaders 31. Spreadsheets 32 . Word processo rs 33 . Lisp 34. PC-DOS 35 . Loaders/linkers bundled into an operating system 36. Ja va 37. SPSS 38. C++ Exe rcises 39-59 art' short-answer q uest io ns. 39 . What do we mean by the statement th at "the 1980s a nd 1990s must be characterized by the ch anging profile or the user" ? 40. Why was Mosaic important? 41. 42. Discuss the browser wa rs. Describe how the Web changed arter 2002. 43. Of the predictions listed in this chapter on page 25, w hi ch do you consider the biggest e rror in judgment? Expla in . 44. Name the four a reas in which the practitioner must be skilled. 45. Distinguish between comp111ing as a tool an d computing as a discipline. 46. Is computin g a ma themati ca l d iscipline, a scienti fi c d iscipline, or an engineering discipline? Explain . 47. Distinguish be tween systems a reas and app licatio ns areas in compu ting as a discipline. 48. Define the word abs1ractio11 and relate it to the drawing in Figure 1.2. 49. Compa re Tables 1. 1 and 1.2. Which trends do you sec? 50. Define the word protocol and e xplain how it is used in computing. 51. Distingu ish between machine language and assembly language. 52. Distinguish between asse mbl y lang uage and h igh-level languages. 53. FORTRA N and COBOL were two high-level languages defined during the second ge neration of co mput e r software . Compare and contrast these la nguages in terms of th eir hi story and their purpose. 33 Thought Questions 54. 55. 56. 57 . l. 2. Distinguish between an assembler and a compiler. Distinguish between a syste ms programmer and an applications programmer. What w as the rationa le behind the developm ent of operating system s? What constitutes systems software? Ide ntify five abstractions in yo ur school environment. Indicate which details are hidden by the abstraction and how the abstraction he lps manage complexity. Discuss the role of abstraction in the history of computer software. 58. 59. 3. 4. What do the following pieces of software do? a. Loade r b. Linker c. Editor How was the program SPSS differe nt from the programs that came before it? Did yo u have a computer in your home when yo u w ere growing up? If so, did it have Intern et access? Did yo u use it for any of you r h igh school classwork? Do you know anyone today who does not ha ve internet access?