Top Banner
David Evans [email protected] http://www.cs.virginia.edu/evans/talks/cs390-s04/ 1001 Things Every Self-Respecting Computer Scientist Should Know 2 CS390 14 April 2004
54

David Evans [email protected] 1001 Things Every Self-Respecting Computer Scientist Should Know 2.

Dec 31, 2015

Download

Documents

Moris Kelley
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

David [email protected]

http://www.cs.virginia.edu/evans/talks/cs390-s04/

1001 Things Every Self-Respecting

Computer Scientist Should Know

2

CS39014 April 2004

Page 2: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 2

1001 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 How do Computer Scientists manage complexity?0110 What is and is not computable?0111 Who was the first object-oriented programmer?1000 Who invented the Internet?

Page 3: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 3

0. What is Computer Science?

Page 4: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 4

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)

Page 5: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 5

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

Page 6: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 6

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)

Page 7: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 7

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

Page 8: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 8

1. What problem did the first electronic programmable

computer solve?

Page 9: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 9

ColossusFirst 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

Page 10: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 10

Colossus’ Problem• Decode Nazi high

command messages from Lorenz Machine

• XOR encoding:

Ci = Mi Ki

– Perfect cipher, if K is random and secret

Page 11: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 11

For any given ciphertext, all plaintexts are equally possible.

Ciphertext: 0100111110101

Key: 1100000100110

Plaintext: 1000111010011 = “CS”

Why perfectly secure?

1

0 B

Page 12: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 12

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

Page 13: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 13

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

Page 14: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 14

2. Why was the first personal computer built?

Page 15: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 15

Apollo Guidance Computer, 1961-69

1 cubic foot, 70 pounds

Why did they need to fit the guidance computer in the rocket?

4KB of read/write magnetic core memory64KB of read-only memory

Page 16: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 16

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

Page 17: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 17

3. Science, Engineering or Other?

Page 18: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 18

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

Page 19: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 19

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

Page 20: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

Computing Power 1969-2004(in Apollo Control Computer Units)

0

2,000,000

4,000,000

6,000,000

8,000,000

10,000,000

12,000,000

14,000,000

16,000,000

18,000,000

1969

1971

1972

1974

1975

1977

1978

1980

1981

1983

1984

1986

1987

1989

1990

1992

1993

1995

1996

1998

1999

2001

2002

2004

2005

Moore’s Law: computing power doubles every 18 months!

If Apollo Guidance Computer power is 1 inch, you have 5 miles! 1GB/4KB = 262 144 but why not 18M x?

Page 21: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 21

Constraints Computer Scientists Face

• Not like those for engineers:– Cost, weight, physics, etc.– If 1 Million times what NASA had in 1969 isn’t

enough for you, wait until 2007 and you will have 4 Million times…

• More like those for Musicians and Poets:– Imagination and Creativity– Complexity of what we can understand– Cost of human effort

Page 22: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 22

So, what is computer science?

• 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!

Page 23: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 23

The Liberal Arts

Trivium (3 roads)

language

Quadrivium (4 roads)

numbers

Grammar Rhetoric Logic Arithmetic

Geometry

Music

Astronomy

Page 24: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 24

Liberal Arts• 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 understandmeaning to describe

computations

Interfaces between components, discourse

between programs and users

Logic for controlling and reasoning about

computations

Yes

Yes (graphics)

Yes (read Gödel, Escher, Bach)

Sort of, read Neil DeGrasse Tyson’s essay

Triv

ium

Qua

driv

ium

Page 25: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 25

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

Page 26: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 26

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?

Page 27: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 27

Human Genome

Produces60 Trillion Cells (6 * 1013)

50 Million die every second!

Page 28: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 28

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

1 CD ~ 650 MBWal-Mart’s databaseis >280 Terabytes

Page 29: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 29

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

Page 30: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 30

5. How do Computer Scientists manage

complexity?

Page 31: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 31

Abstraction

Adapted from Gerard Holzmann’s FSE Slides

Page 32: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 32

Abstraction in Computer Science

• Procedural Abstraction (CS101)– Abstract what to do from specific values to do

it to

• Data Abstraction (CS201)– Abstract away representation details by

specifying what you can do with something

• Abstraction by Specification (CS340)– Abstract away how details by saying what a

procedure does

Page 33: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 33

6. What is and is not computable?

Page 34: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 34

Halting ProblemInput: a procedure POutput: true if P halts (finishes execution), false otherwise.

Is it possible it implement a procedure that correctly implements halts and always terminates?

Page 35: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 35

Halts is not Computableboolean 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!

Page 36: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

Learned Discussion on Computability

(Video)

Page 37: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 37

Ali G Multiplication Problem• Input: two d digit numbers (mostly 9s)

• Output: the product of all the numbers

Is it computable?Yes – a straightforward algorithmsolves it.

Is it tractable?Yes – elementary multiplication solves it in O(d2)

Can real computers solve it?

Page 38: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.
Page 39: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 39

Ali G was Right!• Theory assumes ideal computers:

– Unlimited, perfect memory– 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

Page 40: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 40

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

Page 41: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 41

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

Page 42: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 42

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.

Page 43: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 43

Who was the first object-oriented programmer?

Page 44: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 44

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

Page 45: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 45

7. Who Invented the Internet?

Page 46: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 46

What is a Network?

A group of three or more connected entities communicating indirectly

Ancient Greeks had beacon chainnetworks on Greek island mountaintops

Page 47: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 47

Chappe’s Semaphore Network

Mobile Semaphore Telegraph Used in the Crimean War 1853-1856

First Line (Paris to Lille), 1794

Page 48: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 48

internetwork

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

Page 49: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 49

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

Page 50: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 50

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.

Page 51: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 51

Licklider and Taylor’s VisionAvailable 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

Page 52: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 52

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”)

Page 53: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 53

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 (or even since you were born)

For slides and links to more information:http://www.cs.virginia.edu/evans/talks/cs390-s04/

Page 54: David Evans evans@cs.virginia.edu  1001 Things Every Self-Respecting Computer Scientist Should Know 2.

14 April 2004 http://www.cs.virginia.edu/evans/talks/cs390-s04/ 54

Any Questions?