1000 Things Every Self-Respecting Computer Scientist Should Know

Slides:



Advertisements
Similar presentations
Lecture 23: Everything Else You Should Know (but won’t see on Exam 2)
Advertisements

Chapter 1—Introduction Introduction C H A P T E R 1 [The Analytical Engine offers] a new, a vast, and a powerful language... for the purposes of mankind.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 18: The Story So Far.
CSC 2400 Computer Systems I Lecture 3 Big Ideas. 2 Big Idea: Universal Computing Device All computers, given enough time and memory, are capable of computing.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. slide 1 CS 125 Introduction to Computers and Object- Oriented Programming.
Chapter 1. Introduction This course is all about how computers work But what do we mean by a computer? –Different types: desktop, servers, embedded devices.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. slide 1 CS 125 Introduction to Computers and Object- Oriented Programming.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 28: Implementing Interpreters.
David Evans CS200: Computer Science University of Virginia Computer Science Class 1: Introduction.
10 November David Evans Things Every Self-Respecting Computer Scientist.
Sadegh Aliakbary Sharif University of Technology Fall 2011.
David Evans CS200: Computer Science University of Virginia Computer Science Class 31: Networks, The Internet, and the.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 12: Decrypting Work Circle Fractal.
Class 37: Computability in Theory and Practice cs1120 Fall 2011 David Evans 21 November 2011 cs1120 Fall 2011 David Evans 21 November 2011.
David Evans CS150: Computer Science University of Virginia Computer Science Class 30: Vocational Skills How (and Why)
David Evans Things Every Self-Respecting Computer Scientist Should Know 2.
Introduction to Computer Systems and the Java Programming Language.
Data Structures Chapter 1- Introduction Mohamed Mustaq.A.
15 October 2003Computer Science1 David Evans ComputerScience.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
David Evans CS200: Computer Science University of Virginia Computer Science Class 38: Fixed Points and Biological Computing.
David Evans cs1120 Fall 2009 University of Virginia Computer Science Class 1: Introduction.
David Evans 101 Things Every Computer Scientist Should Know University of Virginia Department of.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 20: Objects I invented the term Object-
David Evans Lecture 13: Astrophysics and Cryptology CS200: Computer Science University of Virginia Computer Science.
David Evans Things Every Self-Respecting Computer Scientist Should Know 2 Ethics and.
Salman Marvasti Sharif University of Technology Winter 2015.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 22: Objects I invented the term Object-
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 22: Objectifying Objects.
Cs205: engineering software university of virginia fall 2006 David Evans Object-Oriented Programming.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
Victoria Ibarra Mat:  Generally, Computer hardware is divided into four main functional areas. These are:  Input devices Input devices  Output.
Chapter 1 Welcome Aboard. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 1-2 Introduction to the World of.
Yale N. Patt Sanjay J. Patel
Fundamentals of Programming I Overview of Programming
Java Programming: From the Ground Up
David Evans Class 20: Objects I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. — Alan.
Invitation to Computer Science, C++ Version, Fourth Edition
Computers & Programming (CSE 102)
Lecture 1: Introduction Background just got here last week
Class 1: Introduction CS200: Computer Science University of Virginia
Why study Software Design/Engineering ?
Chapter 1 The Big Picture
Class 22: Inheritance CS150: Computer Science University of Virginia
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Ch. 11 Theory of Computation
CS 21a: Intro to Computing I
Algorithm and Ambiguity
Invitation to Computer Science, Java Version, Third Edition
Turing Machines, Busy Beavers, and Big Questions about Computing
Chapter 1: Introduction to Computers and Programming
Lecture 1: Facts of network technologies developments
CSCE Fall 2013 Prof. Jennifer L. Welch.
Objective of This Course
PART VII Security.
Topics Introduction Hardware and Software How Computers Store Data
Algorithm and Ambiguity
CSCE Fall 2012 Prof. Jennifer L. Welch.
Introduction to Data Structure
Tonga Institute of Higher Education IT 141: Information Systems
Discrete Mathematics in the Real World
Tonga Institute of Higher Education IT 141: Information Systems
Computer and Operating System slides extended from Liang’s Java Programming textbook by Professor Parson for CSC 352.
COMPUTER ORGANIZATION
CS 5010 Program Design Paradigms “Bootcamp” Lesson 4.1
Lecture 23: Computability CS200: Computer Science
Lecture 1: Facts of network technologies developments
Programming Logic and Design Eighth Edition
Lecture 1: Facts of network technologies developments
Chapter 1: Introduction to Computers and Programming
Presentation transcript:

1000 Things Every Self-Respecting Computer Scientist Should Know 2 University of Richmond 10 September 2003 David Evans evans@cs.virginia.edu http://www.cs.virginia.edu/evans/talks/richmond/ 10 November 2003

1000 Questions 0000 What is Computer Science? 0001 What problem did the first electronic programmable computer solve? 0010 Why was the first “personal computer” built? 0011 Is Computer Science a science, engineering or other? 0100 What are the world’s most complex programs? 0101 What is and is not computable? 0110 Who was the first object-oriented programmer? 0111 Who invented the Internet? 10 November 2003

0. What is Computer Science? 10 November 2003

Let AB and CD be the two given numbers not relatively prime Let AB and CD be the two given numbers not relatively prime. It is required to find the greatest common measure of AB and CD. If now CD measures AB, since it also measures itself, then CD is a common measure of CD and AB. And it is manifest that it is also the greatest, for no greater number than CD measures CD. Euclid’s Elements, Book VII, Proposition 2 (300BC) 10 November 2003

The note on the inflected line is only difficult to you, because it is so easy. There is in fact nothing in it, but you think there must be some grand mystery hidden under that word inflected! Whenever from any point without a given line, you draw a long to any point in the given line, you have inflected a line upon a given line. Ada Byron (age 19), letter to Annabella Acheson (explaining Euclid), 1834 10 November 2003

What is the difference between Euclid and Ada? “It depends on what your definition of ‘is’ is.” Bill Gates (at Microsoft’s anti- trust trial) 10 November 2003

Geometry vs. Computer Science Geometry (mathematics) is about declarative knowledge: “what is” Computer Science is about imperative knowledge: “how to” Ways of describing imperative processes (computations) Ways of reasoning about (predicting) what imperative processes will do Language Logic 10 November 2003

1. What problem did the first electronic programmable computer solve? 10 November 2003

Colossus First Programmable Computer Bletchley Park, 1943 Designed by Tommy Flowers 10 Colossi in operation at end of WWII Destroyed in 1960, kept secret until 1970s 2 years before ENIAC – calculating artillery tables 10 November 2003

Colossus’ Problem Decode Nazi high command messages from Lorenz Machine XOR encoding: Ci = Mi  Ki Perfect cipher, if K is random and secret 10 November 2003

Why perfectly secure? Key: 1100000100110 For any given ciphertext, all plaintexts are equally possible. Ciphertext: 0100111110101 Key: 1100000100110 Plaintext: 1000111010011 = “CS” 1 B 10 November 2003

Breaking Lorenz Operator and receiver need same keys Generate key bits using rotor machine, start with same configuration One operator retransmitted a message (but abbreviated message header the second time!) Enough for Bletchley Park to figure out key – and structure of machine that generated it! But still had to try all configurations 10 November 2003

Colossus Read ciphertext and Lorenz wheel patterns from tapes Tried each alignment, calculated correlation with German Decoded messages (63M letters by 10 Colossus machines) that enabled Allies to know German troop locations to plan D-Day 10 November 2003

2. Why was the first personal computer built? 10 November 2003

Apollo Guidance Computer, 1961-69 1 cubic foot, 70 pounds 4KB of read/write magnetic core memory 64KB of read-only memory Why did they need to fit the guidance computer in the rocket? 10 November 2003

AGC History Needed all guidance to be on board in case Soviets jammed signals for Earth Design began in 1961 Risky decision to use Integrated Circuits (invented in 1958) Building 4 prototypes used 60% of all ICs produced in the US in the early 60s! Spurred industry growth 10 November 2003

3. Science, Engineering or Other? 10 November 2003

Science? Understanding Nature through Observation About real things like bowling balls, black holes, antimatter, electrons, comets, etc. Math and Computer Science are about fake things like numbers, graphs, functions, lists, etc. Computer Science is a useful tool for doing real science, but not a real science 10 November 2003

Engineering? “Engineering is design under constraint… Engineering is synthetic - it strives to create what can be, but it is constrained by nature, by cost, by concerns of safety, reliability, environmental impact, manufacturability, maintainability and many other such 'ilities.' ...” William Wulf 10 November 2003

Computing Power 1969-2002 (in Apollo Control Computer Units) Moore’s Law: computing power doubles every 18 months! If Apollo Guidance Computer power is 1 inch, you have 5 miles! (1GB/4KB = 262144) 10 November 2003

Constraints Computer Scientists Face Not like those for engineers: Cost, weight, physics, etc. If 8 Million times what NASA had in 1969 isn’t enough for you, wait until 2007 and you will have 32 Million times… More like those for Musicians and Poets: Imagination and Creativity Complexity of what we can understand Cost of human effort 10 November 2003

So, what is computer science? No: its about fake things like numbers, not about observing and understanding nature Engineering No: we don’t have to deal with engineering-type constraints Must be a Liberal Art! 10 November 2003

The Liberal Arts Quadrivium (4 roads) Trivium (3 roads) language numbers Trivium (3 roads) Quadrivium (4 roads) Grammar Rhetoric Logic Arithmetic Music Geometry Astronomy 10 November 2003

Liberal Arts Trivium Quadrivium Grammar: study of meaning in written expression Rhetoric: comprehension of verbal and written discourse Logic: argumentative discourse for discovering truth Arithmetic: understanding numbers Geometry: quantification of space Music: number in time Astronomy: laws of the planets and stars Yes, we need to understand meaning to describe computations Trivium Interfaces between components, discourse between programs and users Logic for controlling and reasoning about computations Yes Yes (graphics) Quadrivium Yes (read Gödel, Escher, Bach) Sort of, read Neil DeGrasse Tyson’s essay 10 November 2003

4. What are the world’s most complex programs? 10 November 2003

Complex Programs Apollo Guidance Software ~36K instructions F-22 Steath Fighter Avionics Software 1.5M lines of code (Ada) 5EEE (phone switching software) 18M lines Windows XP ~50M lines (1 error per kloc ~ 50,000 bugs) Anything more complex? 10 November 2003

Human Genome Produces 60 Trillion Cells (6 * 1013) 50 Million die every second! 10 November 2003

How Big is the Make-a-Human Program? 3 Billion Base Pairs Each nucleotide is 2 bits (4 possibilities) 3B bases * 1 byte/4 pairs = 750 MB Highly redundant encoding (21/64) ~ 250 MB About 95% of it is junk ~ 12 MB Wal-Mart’s database is 280 Terabytes 1 CD ~ 650 MB 10 November 2003

Expressiveness of DNA Genetic sequence for 2 humans differs in only 2 million bases 4 million bits = 0.5 MB 1/3 of a floppy disk <1% of Windows 2000 10 November 2003

5. What is and is not computable? 10 November 2003

Halting Problem Input: a procedure P Output: true if P halts (finishes execution), false otherwise. Is it possible it implement a procedure that correctly implements halts and always terminates? 10 November 2003

Halts is not Computable boolean contradictHalts (Program P) if (halts “contradictHalts (P);”) while (true) ; else return true; If contradictHalts halts, the if test is true if enters the while loop - it doesn’t halt! If contradictHalts doesn’t halt, the if test if false, and it evaluates to true. It halts! 10 November 2003

Learned Discussion on Computability (Video) 10 November 2003

Ali G Multiplication Problem Input: a list of n numbers Output: the product of all the numbers Is it computable? Yes – a straightforward algorithm solves it. Can real computers solve it? 10 November 2003

10 November 2003

Ali G was Right! Theory assumes ideal computers: Real computers have: Unlimited memory Unlimited power Unlimited (finite) time Real computers have: Limited memory, time, power outages, flaky programming languages, etc. There are many decidable problems we cannot solve with real computer: the numbers do matter 10 November 2003

6. Who was the first Object-Oriented Programmer? “I invented the term Object-Oriented and I can tell you I did not have C++ in mind.” Alan Kay 10 November 2003

What is an Object? Packaging state and procedures State: the representation What a thing is Procedures: methods and constructors What you can do with it 10 November 2003

Object-Oriented Programming State of mind where you program by thinking about objects It is difficult to reach that state of mind if your language doesn’t have: Mechanisms for packaging state and procedures (Java has class) Subtyping (Java has extends and implements) Other things can help: dynamic dispatch, implementation inheritance, automatic memory management, Krispy Kremes, etc. 10 November 2003

Who was the first object-oriented programmer? 10 November 2003

By the word operation, we mean any process which alters the mutual relation of two or more things, be this relation of what kind it may. This is the most general definition, and would include all subjects in the universe. Again, it might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations…Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition were susceptible of such expression and adaptations, the engine might compose elaborate and scientific pieces of music of any degree of complexity or extent. Ada Augusta Byron, 1842 10 November 2003

7. Who Invented the Internet? 10 November 2003

What is a Network? A group of three or more connected entities communicating indirectly Ancient Greeks had beacon chain networks on Greek island mountaintops 10 November 2003

Chappe’s Semaphore Network First Line (Paris to Lille), 1794 Mobile Semaphore Telegraph Used in the Crimean War 1853-1856 10 November 2003

internetwork A collection of multiple networks connected together, so messages can be transmitted between nodes on different networks. 10 November 2003

The First Internetwork 1800: Sweden and Denmark worried about Britain invading Edelcrantz proposes link across strait separating Sweden and Denmark to connect their (signaling) telegraph networks 1801: British attack Copenhagen, transmit message to Sweden, but they don’t help. Denmark signs treaty with Britain, and stops communications with Sweden 10 November 2003

First Use of The Internet October 1969: First packets on the ARPANet from UCLA to Stanford. Starts to send "LOGIN", but it crashes on the G. 20 July 1969: Live video (b/w) and audio transmitted from moon to Earth, and to several hundred million televisions worldwide. 10 November 2003

Licklider and Taylor’s Vision Available within the network will be functions and services to which you subscribe on a regular basis and others that you call for when you need them. In the former group will be investment guidance, tax counseling, selective dissemination of information in your field of specialization, announcement of cultural, sport, and entertainment events that fit your interests, etc. In the latter group will be dictionaries, encyclopedias, indexes, catalogues, editing programs, teaching programs, testing programs, programming systems, data bases, and – most important – communication, display, and modeling programs. All these will be – at some late date in the history of networking - systematized and coherent; you will be able to get along in one basic language up to the point at which you choose a specialized language for its power or terseness. J. C. R. Licklider and Robert W. Taylor, The Computer as a Communication Device, April 1968 10 November 2003

The Modern Internet Packet Switching: Leonard Kleinrock (UCLA), Donald Davies and Paul Baran, Edelcrantz’s signaling network (1809) Internet Protocol: Vint Cerf, Bob Kahn Vision, Funding: J.C.R. Licklider, Bob Taylor Government: Al Gore (first politician to promote Internet, 1986; act to connect government networks to form “Interagency Network”) 10 November 2003

Summary Computer Science is a real intellectual discipline: not like “Automotive Engineering” or “Toaster Science” Seek out and work on problems that are at the intellectual core of computer science Most of Computer Science was not invented yesterday For slides and links to more information: http://www.cs.virginia.edu/evans/talks/richmond/ 10 November 2003

Any Questions? 10 November 2003