Computer Science 516 Week 1 Lecture Notes Course Overview • Where does CS516 fit in your education? • ACM standard curriculum • Transfers to: – CSUN – Comp 122, 122L – CSU Channel Islands – Comp 162 – U C system: UCLA, UC San Diego, UC Santa Cruz, UC Davis – UC system: UCSB, UC Irvine (with CS546) Course Overview • Student learning outcomes – Understanding of computer architecture, design, tradeoffs, performance, other factors – Be able to write simple inline assembler routines within C language programs • - Administrative – See instructors web page at faculty.piercecollege.edu/murphyh Some History • • • • • • • Babylonian/Sumerian/Arabic number systems Concept of zero Abacus – China Western European computation begins Blaise Pascal – mechanical calculator Wilhelm Liebnitz – enhanced calculator Jacqard – card cloth weaving patterns English Efforts – Charles Babbage • England needs a Navy to survive • Navies and merchant fleets need to navigate • Astrolabe and sextant navigation required large tables or complex mathematics • Royal Astronomical Society awarded grant for a machine which would calculate the navigational tables • Award won by Charles Babbage Charles Babbage • Difference Engine – automated mechanical calculator – Circa 1830s – Generally successful – Led to further efforts… The Analytical Engine • • • • • • First programmable computer Mechanical Never completed Ada Augusta, Countess Lovelace Lord Byron’s daughter Worked with Babbage on designing computation steps • World’s first computer programmer George Boole • • • • • Developed “Propositional Calculus” in 1860s Basically binary algebra C++ bool type named for him Proposed many binary operators Theoretical foundation for digital electronics US Computation • Not much interest due to Civil War • First postwar census – 1870 – was widely critisized • Census is important, determines how many Congress members a state has • Led to automation proposals Herman Hollerith • MIT Professor • Developed tabulating system using cards based upon Jacquard’s system • Electro-mechanical • Used in 1880 census – generally successful • Led to wide acceptance in large companies of the era, e.g. railroads Hollerith Progression • Not a businessman • Expanded into time clocks, weight scales, etc. • In 1914, hired NCR’s star salesman, Thomas J. Watson • Watson changed name to International Business Machines • Very successful in the 20th century – Ongoing antitrust problems 1930s – Genesis of Computers • Atanasoff – Iowa State University • Developed first analog computer • In contentious court cases regarding who invented the computer (and should have patent rights), was declared the inventor of the computer by the US Supreme Court 1940s – Wartime Progress • • • • • Germany – Konrad Zuse Destroyed in bombing raids Poland – broke German encryption Evacuated to France and then to UK Worked with English mathematicians to decode German messages Battle Of The Atlantic • Most crucial for Great Britain • Signals intelligence and codebreaking were key to British survival • Alan Turing (see book description) • See movie: “The Imitation Game” • Numerous books on Enigma, codebreaking, Ultra, et cetera Collossus – first electronic computer Battle Of Midway • High point of Japanese military expansion • Historic American victory • Depended upon breaking Japanese Purple code • Accomplished with IBM tab machines in Pearl Harbor • Some details still classified Other US Efforts • • • • • • • Mark I – Harvard Electromechanical computer AT&T NCR University of Pennsylvania – EDVAC First electronic computer? Eckert & Mauchly John Von Neumann • See book for details of his life • Atomic bomb research • Developed seminal model of computers with Herman Goldstine • Game theory, Mutual Assured Destruction • - Harvard vs. Princeton models • - Stack machines Von Neumann Architecture Postwar • Thomas J. Watson – “I think there’s a world market for about five computers” - 1945 • Univac bought Eckert & Mauchly, developed Univac I • Early sales – Bureau of the Census • Everybody decided to start making computers! • Bendix, Burroughs, GE, Honeywell, NCR, Philco, RCA, Singer…can’t list them all Major Computers of the 1950s • IBM RAMAC – first disk drive – 1956 • IBM 650 – tab machine with a rotating drum memory • IBM 704/709 – scientific computers • IBM 7000 series, 7094 – large scientific computers • Univac 1103 • Control Data 160A IBM System/360 • • • • • Landmark architectural change 8-bit characters 32-bit integers (also 16-bit) 16 general purpose registers Most important: fully program compatible from smallest model to largest – no reprogramming when a larger machine was bought! A Little Local History • • • • Pierce College first computer – IBM 1620 8K storage Memory-memory design Room 1412 CSUN Computers • GE-225 – introductory programming • 20-bit word CSUN Time Sharing • GE-415 • 24-bit word – not compatible with GE-225 • Teletype ASR33 time sharing terminals CSUN Progression • CDC 3170 • 24-bit word • 32K memory Pierce Computer Science • Xerox 530 • Remote Job Entry • Room 1507 Pierce Computer Science Advances • Prime 750 • 16-bit minicomputer Pierce Computer Science - VAX • Digital Equipment Corporation VAX • Highly regarded design • 32-bit words • 2GB memory model UCLA Health Sciences • IBM 360 model 91 • Landmark design • Instruction Pipeline The 1970s • • • • Integrated circuits Intel 4004 – first microprocessor – 4 bit Many other competitors in the 1970s 6800, 6502, Z-80, et cetera IBM PC • Intel 8086 – 16-bit design • IBM used 8-bit data bus version, 8088, to reduce costs • Landmark design due to making details public, allowing many vendors to make peripherals 1980s • Reduced Instruction Set Computers (RISC) • Used for engineering workstations – – – – – – MIPS Sun Silicon Graphics Apollo (bought by HP) IBM RS/6000 DEC Alpha • As a class, these ate into DEC’s market share • Established new market for internet servers CS516 Coverage • - Basic single-address computers e.g. CDC 3170 • - IBM 360 • - CDC 6600 • - DEC VAX, Motorola 68000 • - Intel 8086 and successors • - RISC (SPARC, MIPS, ARM) Assembly Language • Once the primary focus of this type of course • Less essential in 2000s • Less stressed in many Computer Science degree programs When to use Assembly Language • Speed – when compiler cannot generate efficient code • Speed depends upon the algorithm, not just the language • Size – When compiler generated code or data is too big • Data structure design is key, not just use of assembly Operating System Interface • Use assembly language when operating system interfaces are not supported by high level languages – Much rarer today! – IBM mainframe is major example • Use assembly for direct hardware interface – Much rarer today!