CS 302 Ch. 1 The Big Picture 1.1 Computing Systems Computing system: computer hardware, software, and data, which interact to solve problems Computer hardware: the collection of physical elements that make up the machine and its related pieces: boxes, circuit boards, chips, wires, disk drives, keyboards, monitors, printers, and so on. Computer software: the collection of programs that provide the instructions that a computer carries out Layers of a Computing System Information (innermost layer)- reflects the way we represent info. on a computer; info. on a computer is managed using binary digits, 1 and 0; types of info. we manage: numbers, text, images, audio, video Hardware (next layer)- consists of the physical hardware of a computer system; includes devices such as gates and circuits, which control the flow of electricity in fundamental ways; Central Processing Unit (CPU), memory Programming (next layer)- deals with software, the instructions used to accomplish computations and manage data; programs take many forms, performed at many levels, implemented in many languages; goal is to solve problems Operating system (OS)( next layer)- helps manage the computer’s resources; Windows XP, Linux, Mac OS; help us interact with the computer system and manage the way hardware devices, programs, and data interact Applications (outer layer)- focuses on using the computer to solve specific realworld problems; run application programs to take advantage of the computer’s abilities in other areas, such as helping us design a building or play a game; The spectrum of area-specific computer software tools if far-reaching and involves specific sub disciplines of computing, such as information systems, artificial intelligence, and simulation Communications (outmost layer)- computers are connected into networks so they can share information and resources; the Internet Abstraction: a mental model that removes complex details; ex. the levels of a computing system -Miller’s law: a human being can actively manage about 7 (+/- 2 depending on the person) pieces of information in short-term memory at one time -Ex.: driving a car; we don’t need to know how a car works (the engine in detail) to drive one; you only need to know some basics about how to interact with the car (pedals, knobs, steering wheel) -the key to computing; the layers of a computing system embody the idea of abstraction 1.2 The History of Computing A Brief History of Computing Hardware Early History -the Stonehenge, the abacus (16th B.C), mechanical machines that did addition and subtraction (middle 17th), mechanical device to do four wholenumber operations (late 17th), Jacquard’s Loom/ punched card (late 18th) -Charles Babbage’s analytical engine: too complex for him to build for the technology of his time; his vision included memory and the input of both numbers and mechanical steps, making use of punched cards -Ada Augusta/ Countess of Lovelace: first programmer; the concept of the loop-a series of instructions to repeat; programming language Ada -mechanical adding machine (late 19th), electro-magnetic tabulator- read info. from punched card- U.S. census (early 20th) -Turing machine (1936): an abstract mathematical model -World War II: Harvard Mark I, ENIAC, EDVAC (1950), UNIVAC I (1951)first computer used to predict outcome of presidential election First Generation (1951-1959) -commercial computers built using vacuum tubes to store info.; a vacuum tube generated a great deal of heat and not very reliable; required very large, specially built rooms with air-conditioning -magnetic drum: primary memory device that rotated under a read/ write head; when the memory cell that was being accessed rotated, data was written to or read from that place -inpute device was a card reader that read the holes punched in an IBM card; output device was a punched card or a line printer -magnetic tape drives: sequential storage devices; the data on the tape much be accessed one after another in a linear fashion -auxiliary storage devices: storage devices external to the computer memory; ex. magnetic tape -peripheral devices: input devices, output devices, auxiliary storage devices Second Generation (1959-1965) -transistor: replaced the vacuum tube as the main component in the hardware; smaller, more reliable, more durable, and cheaper -advent of immediate access memory; magnetic cores: tiny doughnut shaped devices, capable of storing one bit of information; cores strung together w/ wires to form cells, and cells combined to form a memory unit; device was motionless and accessed electronically -magnetic disk: new auxiliary storage device; faster than the magnetic tape b/c each data item accessed directly by referring to its location on the disk; organized so each piece of data has own location identifier (an address) Third Generation (1965-1971) -integrated circuits (ICs): solid pieces of silicon that contained the transistors, other components, and their connections; much smaller, cheaper, faster, reliable than printed circuit boards (2nd gen.) -Moore’s law: the # of circuits that could be placed on a single integrated circuit was doubling each year -IC technology allowed memory boards to be built using transistors -Aux. storage devices still needed because transistor memory was volatile (info. went away when power turned off) -terminal: an input/output device w/ a keyboard and a screen introduced; keyboard gave user direct access to computer, screen provided an immediate response Fourth Generation (1971-?) -Large-scale integration -several thousand transistors on a silicon chip -Moore’s law: chip density was doubling every 18 months -personal computer (PC): microcomputers become so cheap that anyone could have one; kids played Pac Man -Apple -IBM PC (1981); Apple Macintosh (1984) -workstations: mid 1980s; larger, more powerful machines generally meant for business; workstations connected by cables, or networked so they could interact w/ each other -machine language: set of instructions each computer was designed to understand -RISC chip: Reduced-Instruction-Set-Computer -Moore’s law: Computers will either double in power at the same price or halve in cost for the same power every 18 months parallel architectures: rely on a set of interconnected central processing units rather and a single primary processing unit -offer several ways to increase the speed of execution; a given step in a program can be separated into multiple pieces, and those pieces can be executed simultaneously on several individual processors -SMID computers: single-instruction, multiple-data-stream -MIMD computers: multiple-instruction, multiple-data stream -The Ethernet (1973): invented by Robert Metcalfe and David Boggs; used a cheap coaxial cable to connect the machines and a set of protocols to allow the machines to communicate w/ one another -The Internet: uses packet switching, a way for messages to share lines; made up of many different networks across the world that communicate by using a common protocol, TCP/IP (transmission control protocol/ Internet protocol) A Brief History of Computing Software First-Generation Software (1951-1959) -first programs were written using machine language, the instructions built into the electrical circuitry of a particular computer; the first programmers were mathematicians and engineers; programming in machine language is both time-consuming and prone to errors -assembly languages: used mnemonic codes to represent each machine-language instruction; the 1st artificial programming langugages -software translators: translate programs written in assembly language to machine code -assembler: reads each of the program’s instructions in mnemonic form and translates it into the machine-language equivalent -systems programmers: the programmers who wrote these tools to make programming easier for others Second-Generation Software (1959-1965) -high-level languages: allowed the programmer to write instructions using more English-like statements -FORTRAN- language designed for numerical applications -COBOL- language designed for business applications -Lisp- used mainly in artificial intelligence applications and research -compiler: a program written in FORTRAN or COBOL can be translated and run on any machine that has this kind of translating program -Systems programmers wrote tools like assembler and compilers -Applications programmers: people who used the tools to write programs Third-Generation Software (1965-1971) -operating system: a program that would determine which programs were run when -systems software: loaders, linkers, operating system, and the language translators (assemblers and compilers) -time sharing: many different users, each at a terminal, communicating (inputting and outputting) w/ a single computer all at the same time; each user is assigned a small slice of central processing time and then is put on hold while another user is serviced -general-purpose application programs were being written -systems programmers were writing programs-software tools- for others to use; there were now computer users who were not programmers Fourth Generation (1971-1989) -structured programming: a logical, disciplined approach to pro- gramming; languages Pascal and Modula-2 -C- a language that allows the user to intersperse assembly-language statements in a high-level program introduced -C++: a structured language that allows the user access to low-level statements as well, became the language of choice in industry -more powerful OS: UNIX by AT&T, PC-DOS for IBM PC, MS-DOS for PC compatibles -OS for Macintosh introduced concept of the mouse and the pointand-click graphical interface -high-quality, reasonably priced applications software packages became available: spreadsheets, word processors, database management systems; Lotus 1-2-3, WordPerfect Fifth Generation (1990-Present) -3 main events 1. the rise of Microsoft as a dominant player in computer software 2. object-oriented design and programming 3. the World Wide Web -Microsoft’s Windows OS emerged as major force in PC market -Word was most used word processing program -mid 1990s: word processors, spreadsheet programs, database programs, and other app. Programs bundled- office suits -Object-oriented design: the design of choice for large programming projects; based on a hierarchy of data objects; Java -1990: Tim Berners-Lee created set of technical rules for what would be a universal Internet document center- World Wide Web -created HTML, language for formatting documents, and a basic, text-only browser, a program that allows a user to access info. from websites worldwide -1993: Mosaic released; first graphics-capable browser -Two giants in browser market: Netscape Navigator (Mosaic), Microsoft’s Internet Explorer (IE) -Around 2002 Web changed: social networking sites; MySpace, Facebook, Twitter; online blogging; Wikipedia; (“Web 2.0”) -the ever-changing role of the user: we are now the user 1.3 Computing as a Tool and a Discipline -Everyone is using the computer as a tool 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) -discipline: a field of study; “the body of knowledge and practices used by computing professionals in their work… This discipline is also called computer science and engineering, computing, and informatics”. “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” -Skilled in four areas 1. Algorithmic thinking: one is able to express problems in terms of step-by-step procedures to solve them 2. Representation: one is able to store data in a way that it can be processed efficiently 3. Programming: one is able to combine algorithmic thinking and representation into computer software 4. Design: the software serves a useful purpose -1989 curriculum model covering the subareas of computer -theory (mathematics) -experimentation-called abstraction by computer scientists (science) -design (engineering) -Theory: the building of conceptual frameworks and notations for understanding relationships among objects in a domain -Experimentation (abstraction): exploring models of systems and architectures within different application domains and determining whether the models predict new behaviors -Design: constructing computer systems that support work in different application domains -Research is ongoing in both systems and applications; Systems research produces better general tools; applications research produces better tools for the domain-specific applications