560 likes | 572 Views
A comprehensive guide for computer scientists covering various topics in computer science, including ethics, history, and fundamental concepts. It provides answers to 1001 important questions that every self-respecting computer scientist should know.
E N D
Ethics and 1001 Things Every Self-Respecting Computer Scientist Should Know 2 but might not learn in CS101-CS390 David Evans evans@cs.virginia.edu http://www.cs.virginia.edu/evans/cs390
Why This Isn’t a Research Pitch • The students I want to work with are: • Resourceful enough to learn about my research by visiting my web page and reading papers • Smart enough to pick a thesis advisor by talking to current/recent students • I only have one hour and there are more important things to tell you than about my own research • I may go over, feel free to leave at any time 1001 Things
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 Who was the first object-oriented programmer? 0111 Who invented the Internet? 1000 Why should we say goodbye to “Hello World!”? 1001 Things
0. What is Computer Science? 1001 Things
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) 1001 Things
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 1001 Things
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) 1001 Things
Geometry vs. Computer Science • Geometry (mathematics) is about declarative knowledge: “what is” If now CD measures AB, since it also measures itself, then CDis a common measure of CD and AB • Computer Science is about imperative knowledge: “how to” • About “computing” not “computers” • An unnatural science 1001 Things
Computer Science “How to” knowledge: • Ways of describing imperative processes (computations) • Ways of reasoning about (predicting) what imperative processes will do Language Logic 1001 Things
1. What problem did the first electronic programmable computer solve? 1001 Things
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) 1001 Things
Colossus’ Problem • Decode Nazi high command messages from Lorenz Machine • XOR encoding: Ci = Mi Ki • Perfect cipher, if K is random and secret 1001 Things
Why perfectly secure? For any given ciphertext, all plaintexts are equally possible. Ciphertext: 0100111110101 Key: 1100000100110 Plaintext: 1000111010011 = “CS” 1 B 0 1001 Things
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 1001 Things
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 1001 Things
2. Why was the first personal computer built? 1001 Things
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? 1001 Things
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 1001 Things
3. Science, Engineering or Other? 1001 Things
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 1001 Things
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 1001 Things
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) 1001 Things
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 2006 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 1001 Things
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! 1001 Things
The Liberal Arts language numbers Quadrivium (4 roads) Trivium (3 roads) Grammar Rhetoric Logic Arithmetic Music Geometry Astronomy 1001 Things
Liberal Arts Yes, we need to understand meaning to describe computations • 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 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) Yes, read Neil DeGrasse Tyson’s essay 1001 Things
4. What are the world’s most complex programs? 1001 Things
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? 1001 Things
Human Genome Produces 60 Trillion Cells (6 * 1013) 50 Million die every second! Today is the 50th anniversary of the most important scientific paper of the 20th century! Molecular structure of Nucleic Acids, James Watson and Francis Crick. Letter to Nature, sent 2 April 1953 (2 pages) 1001 Things
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 1 CD ~ 650 MB Wal-Mart’s database is 280 Terabytes 1001 Things
Encoding is Redundant • DNA encodes proteins • Every sequence of 3 base pairs one of 20 amino acids (or stop codon) • 21 possible codons, but 43 = 64 possible values • So, really only 750GB * (21/64) ~ 246 MB • Trillions of creatures, over millions of years, had to die to create this program! 1001 Things
Expressiveness of DNA • Genetic code 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 1001 Things
5. How do Computer Scientists manage complexity? 1001 Things
Abstraction Adapted from Gerard Holzmann’s FSE Slides 1001 Things
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 1001 Things
6. Who was the first Object-Oriented Programmer? 1001 Things
What is an Object? • Packaging state and procedures • state: the rep • What a thing is • procedures: methods and constructors • What you can do with it 1001 Things
Bjarne Stroustrup’s Answer “Object-oriented programming is programming with inheritance. Data abstraction is programming using user-defined types. With few exceptions, object-oriented programming can and ought to be a superset of data abstraction. These techniques need proper support to be effective. Data abstraction primarily needs support in the form of language features and object-oriented programming needs further support from a programming environment. To be general purpose, a language supporting data abstraction or object-oriented programming must enable effective use of traditional hardware.” 1001 Things
“I invented the term Object-Oriented and I can tell you I did not have C++ in mind.” Alan Kay 1001 Things
Object-Oriented Programming is a 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 (subtype and subclass) and implements (subtype) • Other things can help: dynamic dispatch, implementation inheritance, automatic memory management, mixins, good Indian food, Krispy Kremes, etc. 1001 Things
Who was the first object-oriented programmer? 1001 Things
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, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine. Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition... • Ada Byron, 1843 1001 Things
7. Who Invented the Internet? 1001 Things
What is a Network? A group of three or more connected entities communicating indirectly Ancient Greeks had beacon chain networks on Greek island mountaintops 1001 Things
Chappe’s Semaphore Network First Line (Paris to Lille), 1794 Mobile Semaphore TelegraphUsed in the Crimean War 1853-1856 1001 Things
internetwork A collection of multiple networks connected together, so messages can be transmitted between nodes on different networks. 1001 Things
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 1001 Things
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 televisions worldwide. 1001 Things
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 1001 Things
The Modern Internet • Packet Switching: Leonard Kleinrock (UCLA) thinks he did, Donald Davies and Paul Baran, Edelcrantz’s signalling network (1809) sort of did it • 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”) 1001 Things