History of Computing


Published on

An introduction to computer sciences and computer engineering through the computing history.

Published in: Education, Technology, Travel
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • 0101: first bit: you like CS101 second bit: you know CS101 third bit: you want to know CS101 four bit: you will repeat CS101
  • History of Computing

    1. 1. History of Computing http://www.vigneras.name/pierre Dr. Pierre Vignéras This work is licensed under a Creative Commons Attribution-Share Alike 2.0 France. See http://creativecommons.org/licenses/by-sa/2.0/fr/ for details
    2. 2. Text Books Books Reference Book: New Perspectives On Computer Concepts Parsons and Oja National Book Foundation The Web: http://wikipedia.org C- How to program (Third Edition) Introduction C++ and Java Deitel & Deitel Prentice Hall
    3. 3. <ul><li>No entry after the first 10 minutes
    4. 4. No exit before the end of the class
    5. 5. Unannounced Quiz </li><ul><li>Weekly, at the beginning of a class
    6. 6. Fixed timing (you may suffer if you arrive late)
    7. 7. Spread Out (do it quickly to save your time)
    8. 8. Papers that are not strictly in front of you will be considered as done
    9. 9. Cheaters will get '-1' mark
    10. 10. Your head should be in front of your paper! </li></ul></ul>Class, Quiz & Exam Rules Rules
    11. 11. Grading Policy <ul><li>Quiz: 20 %
    12. 12. Mid: 30 %
    13. 13. Final: 50 %
    14. 14. A final average below 50/100 will be assigned a failed mark: F. </li></ul>Grading Policy
    15. 15. Outline (Important points) <ul><li>Basics </li><ul><li>Numeral basis
    16. 16. Bits & Bytes
    17. 17. computer components </li></ul><li>Hardware History </li><ul><li>Von Neumann Architecture
    18. 18. Moore's Law </li></ul></ul>
    19. 19. <ul><li>Theory History </li><ul><li>Godel Theorem
    20. 20. Turing Machine, Lambda Calculus & Boolean Algebra
    21. 21. Algorithms (pseudo-code, flowcharts)
    22. 22. Computability and Complexity Theory </li></ul><li>Language History </li><ul><li>Compilation vs Interpretation
    23. 23. Type System
    24. 24. Type checking (static vs dynamic, weak vs strong) </li></ul></ul>Outline (Important points)
    25. 25. <ul><li>Operating System History </li><ul><li>Definitions & Compositions
    26. 26. Eras (Unix, Apple, IBM PC, Mac, Windows)
    27. 27. Open Source (GNU, Linux) </li></ul><li>Network History </li><ul><li>Internet, Web, Search Engine
    28. 28. Network Layers (OSI, TCP/IP)
    29. 29. Network Topology </li></ul></ul>Outline (Important points)
    30. 30. Outline
    31. 31. Computer: definition (http://en.wikipedia.org/wiki/Computer) <ul><li>Origin </li><ul><li>Person who performed numerical calculations, often with the aid of a mechanical calculating device </li></ul><li>Today </li><ul><li>Machine for manipulating data according to a list of instructions known as a program . </li></ul><li>Various sort </li><ul><ul><li>Supercomputer, Mainframe, Servers
    32. 32. Personal Computers, Laptop
    33. 33. PDA, Cellular Phones, Smart cards </li></ul></ul></ul>I. Basics
    34. 34. Vocabulary (http://en.wikipedia.org/wiki/Digital http://en.wikipedia.org/wiki/Bit) <ul><li>Digital = discrete </li><ul><li>Comes from digits (Latin origin = fingers) </li></ul><li>Analogue = continuous (real life)
    35. 35. Bit = 1 binary digit </li><ul><li>Can have either the value 1 or 0
    36. 36. Used to represent (almost) everything
    37. 37. Physical representation: </li><ul><li>1 == electricity is present
    38. 38. 0 == no electricity </li></ul></ul><li>A byte is a collection of 8 bits </li><ul><li>Unit for storage capacity </li></ul></ul>I. Basics
    39. 39. Numeral Bases I. Basics
    40. 40. Personal Computer Architecture <ul><li>Screen
    41. 41. Motherboard
    42. 42. Processor (CPU)
    43. 43. Memory (RAM)
    44. 44. Extension Cards
    45. 45. Power Supply
    46. 46. Optical disk drive (CD/DVD)
    47. 47. Hard Disk Drive (HDD)
    48. 48. Keyboard
    49. 49. Mouse </li></ul>I. Basics
    50. 50. Memory (http://en.wikipedia.org/wiki/Random_Access_Memory) <ul><li>Random Access Memory (Main memory) </li><ul><li>Erased when computer is shut down
    51. 51. A list of cells </li><ul><li>Each cell is assigned an address (a number) and can store a fixed amount of informations (8, 16, 32 or 64 bits) </li></ul><li>Memory can contains instructions or data </li><ul><li>The cell addressed #1234 contains “0101”
    52. 52. “0101” may means: </li><ul><li>the number 5 in decimal,
    53. 53. the character 'F',
    54. 54. the instruction: “increase the value of the next cell by one”
    55. 55. The first and third “property” are TRUE, others are FALSE,
    56. 56. Anything else... </li></ul></ul></ul></ul>I. Basics
    57. 57. Central Processing Unit (Processor) (http://en.wikipedia.org/wiki/CPU) <ul><li>Reads instructions from the memory, executes them and writes the result in the memory </li><ul><li>Operations possible </li><ul><li>addition, subtraction, multiplication, division
    58. 58. comparisons, string manipulations, ... </li></ul></ul><li>Driven by a timer </li><ul><ul><li>Frequency = Number of ticks (cycle) per second
    59. 59. Performance = Instructions Per Cycle * Frequency </li><ul><li>AMD Athlon XP ~ 2.5 IPC
    60. 60. Intel PIV ~ 2 IPC
    61. 61. At same clock speed, AMD Athlon performs better than Intel PIV </li></ul></ul></ul><li>Connected with other devices by several bus </li></ul>I. Basics
    62. 62. Input/Output Devices <ul><li>Hard drives </li><ul><li>Store permanently data </li><ul><li>Programs and data (documents) </li></ul></ul><li>Network cards (Ethernet card) </li><ul><li>Used to connect several computers </li></ul><li>CD/DVD drives </li><ul><li>Read-only storage devices (music, video, data) </li></ul><li>Video Card (3D specialized hardware) </li><ul><li>Driven by the CPU to transmit data on screen(s)
    63. 63. Contains a Graphic processor (GPU)
    64. 64. Needs its own memory </li></ul></ul>I. Basics
    65. 65. The 2006 market <ul><li>CPUs (future trends is multi-core) </li><ul><li>Intel: PIV (~ 3.8 GHz), Core Duo (~ 2 GHz)
    66. 66. AMD: Athlon 64, Opteron (~ 2 Ghz) </li></ul><li>Memory: [512 – 1512] MB
    67. 67. Hard Drives: [60 – 800 ] GB
    68. 68. Network Cards: </li><ul><li>Ethernet: 1 Gb/s
    69. 69. Wireless (Wi-Fi): ~ 54 Mb/s </li></ul><li>Video Cards: ~ 256 MB, 400 MHz
    70. 70. Screens: CRT 17' & 19'; TFT 15' & 17' (trend) </li></ul>I. Basics
    71. 71. Internet (http://en.wikipedia.org/wiki/Internet) <ul><ul><li>Worldwide, publicly accessible network of interconnected computer networks that transmit data using the IP protocol (language)
    72. 72. World Wide Web (WWW): </li><ul><li>collection of interconnected documents, linked by Hyperlinks and URLs
    73. 73. accessible via the Internet, as are many other services
    74. 74. www != Internet
    75. 75. You need a client application (called a web browser) </li></ul><li>URL: protocol://address[:port]/ressource </li><ul><li>http://images.google.com/preferences (www)
    76. 76. fish:// (SSH) </li></ul></ul></ul>I. Basics
    77. 77. Searching on the web <ul><li>Search Engines </li><ul><li>Google: http:// www.google.pk
    78. 78. Yahoo: http://www.yahoo.com </li></ul><li>How does it work? </li><ul><li>During the night, a robot scans the web and indexes web pages making pairs [word, {URLs}]
    79. 79. When you enter a keyword, the search engine look in its table for a matching [word, {URLs}]
    80. 80. It then present the set of {URLs} </li></ul><li>Internet does not provide true informations </li><ul><li>Anyone can write what he wants! </li></ul></ul>I. Basics
    81. 81. E-Mail <ul><li>Works over the Internet like the normal (slow) mail system (also called snail)
    82. 82. You need a client application </li><ul><li>Can be a web browser (webmail)
    83. 83. Can be a dedicated mail reader </li></ul><li>You should follow the netiquette (Internet Etiquette) </li><ul><li>Catch-all term for the conventions of politeness
    84. 84. See: http://tools.ietf.org/html/rfc1855 - RFC1855 (standard) http://www.penmachine.com/techie/emailtrouble_2003-07.html (short) </li></ul></ul>I. Basics
    85. 85. Outline
    86. 86. Parallel Worlds <ul><li>Theory </li><ul><li>Models
    87. 87. Languages
    88. 88. Complexity
    89. 89. Computability
    90. 90. Cryptography </li></ul></ul><ul><li>Engineering </li><ul><li>Hardware </li><ul><li>Processors, Hard drives, Memory, ... </li></ul><li>Software </li><ul><li>Design, Operating Systems, Project Management, ... </li></ul></ul></ul>Edsger Dijkstra: &quot; Computer science is no more about computers than astronomy is about telescopes.” Using a computer does not make one a computer scientist! II. History
    91. 91. http://www.eingang.org/Lecture/ II. History
    92. 92. Counting <ul><li>From the very beginning, men started off by counting on their digits for various reasons </li><ul><li>Sharing food items fairly
    93. 93. Religion & ceremonies according to time
    94. 94. etc. </li></ul><li>Many possibilities (base): 10, 16, 12, 6, ...
    95. 95. Some attempts to create counting machines </li><ul><li>Help counting up to big numbers
    96. 96. Abacus (China), Pascaline (Blaise Pascal, 1642), The Difference Engine (Charles Babbage, 1812) </li></ul></ul>II. History/Hardware
    97. 97. Cards <ul><li>1890: Herman Hollerith presents </li><ul><li>Punched Cards & Tabulating Machine
    98. 98. For U.S. Census Bureau
    99. 99. Used until the highly controversial United States presidential election of 2000
    100. 100. Tabulating Machine is a great success: creation of IBM by Herman Hollerith </li></ul><li>Limited to tabulation </li></ul>II. History/Hardware
    101. 101. Cards (http://en.wikipedia.org/wiki/Punch_card) II. History/Hardware
    102. 102. Cards (http://en.wikipedia.org/wiki/Punch_card) II. History/Hardware
    103. 103. Binary Representation <ul><li>In 1941, Konrad Zuse creates the Z3
    104. 104. Uses binary system </li></ul>II. History/Hardware
    105. 105. Engineering Improvements <ul><li>Mark I (IBM, 1930-1959) </li><ul><li>Fully automatic machine
    106. 106. Four operations on 23 decimals numbers
    107. 107. Subroutines (logarithm & trigonometric functions)
    108. 108. 3 to 5 seconds per multiplication
    109. 109. In use at Harvard until 1959 </li></ul><li>ENIAC (Mauchly and Eckert, 1946-1955) </li><ul><li>10 decimal-digits words
    110. 110. “Wire your own“ instruction technique </li></ul></ul>II. History/Hardware
    111. 111. John Von Neumann (http://en.wikipedia.org/wiki/Von_Neumann_Architecture) <ul><li>Data and Program can be stored in the same space </li><ul><li>The machine itself can alter either its program or its internal data </li></ul><li>Conditional goto's to other point in the code
    112. 112. Often used subroutines can be stored in memory
    113. 113. First machine appears in 1947 (EDVAC & UNIVAC) </li><ul><li>Still the overall architecture of computers today! </li></ul></ul>II. History/Hardware
    114. 114. Von Neumann Architecture II. History/Hardware
    115. 115. Major engineering advances <ul><li>Transistors (Shockley, Bardeen, Walter; 1947) </li><ul><li>Freedom from vacuum tubes, which were extremely bulky </li></ul><li>Integrated Circuits (Kilby, 1959) </li><ul><li>Aka “chip”
    116. 116. collection of tiny transistors which are connected together
    117. 117. only connections were needed to other electronic components </li></ul><li>Machines becomes smaller and more economical to build and maintain. </li></ul>II. History/Hardware
    118. 118. Moore's Law (http://en.wikipedia.org/wiki/Moore's_law) <ul><li>1965: Moore, a co-founder of Intel. </li><ul><li>The complexity of integrated circuits doubles every 24 months
    119. 119. Quoted as “[...] doubles every 18 months ”! </li></ul><li>Empirical Observations and prediction </li><ul><li>goal for an entire industry. </li></ul><li>Moore's law means an average performance improvement in the industry as a whole of over 1% a week. </li><ul><ul><li>A new product that is expected to take three years to develop and is just two or three months late is 10 to 15% slower, bulkier, or lower in storage capacity! </li></ul></ul></ul>II. History/Hardware
    120. 120. Moore's law II. History/Hardware
    121. 121. Moore's Law effect II. History/Hardware
    122. 122. Moore's Law limitation <ul><li>2006 state of the art </li><ul><ul><li>IBM published a paper for a 30 nm technology </li></ul></ul><li>April 2005 </li><ul><ul><li>Gordon Moore stated in an interview that the law may not hold valid for too long, since transistors may reach the limits of miniaturization at atomic levels </li></ul></ul><li>2003: Kurzweil conjecture </li><ul><ul><li>Moore's Law of Integrated Circuits was not the first, but the fifth paradigm to provide accelerating price-performance.
    123. 123. New type of technology will replace current integrated-circuit technology, and that Moore's Law will hold true long after 2020. </li></ul></ul></ul>II. History/Hardware
    124. 124. General Moore's Law II. History/Hardware
    125. 125. 2006 Trends (http://en.wikipedia.org/wiki/Multicore_CPU) <ul><li>Major misunderstanding: </li><ul><li>Performance is not equivalent to clock speed !
    126. 126. Moore's law is not about doubling performance anyway! </li></ul><li>Doubling the number of transistors: </li><ul><li>Put two CPUs on the same silicon die: dual-core </li></ul><li>The future is multi-core systems </li><ul><li>Intel, AMD, IBM, Sun are focusing on this
    127. 127. No need for a new CPU design: less risk </li></ul><li>Major issue at the software level </li><ul><li>How to deal with concurrency? </li></ul></ul>
    128. 128. II. History
    129. 129. The Godel Theorem (1931) (http://en.wikipedia.org/wiki/Gödel's_incompleteness_theorems) <ul><li>In some cases, it is possible to prove something and its contrary (inconsistency).
    130. 130. Some mathematical truth are impossible to prove (incompleteness) </li><ul><li>Idea: “Any French is a lier has said by a French”
    131. 131. Sketch of the proof: </li><ul><li>suppose a program 'P' can tell if a proposition is TRUE or FALSE without error.
    132. 132. Proposition: “The program 'P' does not reply TRUE to this proposition”. </li><ul><li>Can the program reply TRUE or FALSE? Neither!
    133. 133. And what about us? Is the proposition TRUE? Yes! </li></ul></ul></ul></ul>II. History/Theory
    134. 134. Alan Turing Machine (1936) (http://en.wikipedia.org/wiki/Turing_machine) <ul><li>Infinite tape (divided into adjacent cells) </li><ul><li>Each cell contains a symbol from some finite alphabet: {a, ..., z}; {0,...,9}; {0,1} </li></ul><li>Head </li><ul><li>read/write symbols
    135. 135. move the tape left and right one cell at a time. </li></ul><li>Table of instructions that tells the machine: </li><ul><li>what symbol to write
    136. 136. how to move the head
    137. 137. what its new state will be </li></ul><li>State register that stores the (finite) state of the table. </li><ul><li>One special start state </li></ul></ul>II. History/Theory
    138. 138. Turing Machine (Abbrev: TM) (http://en.wikipedia.org/wiki/Turing_machine) II. History/Theory
    139. 139. Alan Turing Machine (1936) (http://en.wikipedia.org/wiki/Turing_machine) <ul><li>Stone (1972): fully description requires </li><ul><li>The alphabet
    140. 140. The input form in which the parameters are presented on the tape
    141. 141. The output form in which answers will be represented on the tape when the Turing machine halts
    142. 142. The initial state of the Turing machine
    143. 143. The machine program </li></ul></ul>II. History/Theory
    144. 144. Turing Machine (http://en.wikipedia.org/wiki/Turing_machine) <ul><li>Example: increment function: inc(x)=x+1 </li><ul><li>Tape alphabet: {0,1}
    145. 145. Input: A number in base one enclosed by zero 0 10 :0...0 1 0...0 1 10 :0...0 1 10...0 4 10 :0...0 1 11110...0 10 10 :0...0 1 11111111110...0
    146. 146. Output: written in place of the input (same form) </li></ul></ul>1,>> 0,1 0,>> 1,<< Starting points Starting state II. History/Theory
    147. 147. Turing Machines <ul><li>Turing Machines can be composed to create more complex ones.
    148. 148. Example: f(x)=x+2 </li></ul>II. History/Theory 1,>> 0,1 0,>> 1,<< 1,>> 0,1 0,>> 1,<<
    149. 149. Turing Machines <ul><li>Turing Machines can be composed to create more complex ones.
    150. 150. Example: f(x)=x+2 </li></ul>II. History/Theory 1,>> 0,1 0,>> 1,<< 1,>> 0,1 0,>> 1,<< Only one initial state! Only one terminal state! Only one initial state!
    151. 151. Turing Machines <ul><li>Turing Machines can be composed to create more complex ones.
    152. 152. Example: f(x)=x+2 </li></ul>II. History/Theory 1,>> 0,1 0,>> 1,<< 1,>> 0,1 0,>> 1,<< Relabel states Make the new link
    153. 153. Turing Machines and Algorithms <ul><li>A Turing Machine describes a “mechanical procedure” </li><ul><li>Sort of recipe
    154. 154. Each step is simple and well defined so it can be followed by any human using a paper and a pencil </li></ul><li>Very complex procedures can be described using Turing machines </li><ul><li>Addition, multiplication, ... (anything?) </li></ul><li>A Turing machine provides an easy to understand abstraction of how computers (humans or machines) are actually working
    155. 155. Turing Machines are the actual formalisation of what is called algorithms </li></ul>II. History/Theory
    156. 156. Algorithms (http://en.wikipedia.org/wiki/Algorithm) <ul><li>From the famous Arab scientist Al-khwarizmi </li><ul><li>Solving problems in an ordered step-by-step sequence </li></ul><li>An algorithm is a finite set of well-defined instructions for accomplishing some task which, given an initial state , will terminate in a defined end-state . </li><ul><li>Order of computation is usually critical to the functioning of the algorithm.
    157. 157. Instructions are usually listed explicitly starting 'from the top' and going 'down to the bottom': this is what is formally called the flow of control . </li></ul></ul>II. History/Theory
    158. 158. Algorithm Representations <ul><li>A Turing Machine is one representation of an algorithm
    159. 159. Other representations include: </li><ul><ul><li>Natural language (too verbose and ambiguous)
    160. 160. pseudo code (no standard) </li><ul><li>derived from programming languages </li></ul><li>flowcharts (too verbose) </li><ul><li>schematic representation of a process
    161. 161. derived from Turing Machines representation </li></ul><li>programming languages (too detailed) </li></ul></ul><li>So which one to choose? It depends! </li><ul><li>All of them but for different situations </li></ul></ul>II. History/Theory
    162. 162. Algorithm Example: largest number Natural Language <ul><li>Input: an unsorted list of numbers
    163. 163. Output: the index (rank) of the largest number in the list </li></ul><ul><ul><li>Assume the first item is largest.
    164. 164. Look at each of the remaining items in the list and if it is larger than the largest item so far, make a note of its rank.
    165. 165. The last noted rank is the one of the largest element in the list when the process is complete. </li></ul></ul><ul><li>Complexity: requires N comparisons where N is the size of the list </li></ul>II. History/Theory
    166. 166. max = 0 for ( all i such that 0<i<|L|) { if ( L max < L i ) max = i } PRINT L m ax Loop Condition Assignment Output Algorithm Example: largest number Pseudo-code (http://en.wikipedia.org/wiki/Pseudo-code) II. History/Theory <ul><li>Made of statements
    167. 167. Four basic constructions: </li><ul><li>assignements,
    168. 168. conditions
    169. 169. Loops
    170. 170. input/output </li></ul></ul><ul><li>An expression is something that evaluate to a value
    171. 171. 3 + 4 * 2 is an expression
    172. 172. PRINT “Hello” is not. </li></ul>
    173. 173. max = 0 for ( all i such that 0<i<|L|) { if ( L max < L i ) max = i } PRINT L m ax Loop Condition Assignment Output Algorithm Example: largest number Pseudo-code (http://en.wikipedia.org/wiki/Pseudo-code) II. History/Theory <ul><ul><ul><ul><ul><ul><ul><ul><li>Assignment : left_value = right_value </li></ul></ul></ul></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><ul><ul><ul><ul><li>left_value represents the content of a RAM cell </li></ul></ul></ul></ul></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><ul><ul><ul><ul><li>'=' means: “ store the value of the expression right_value in left_value ” </li></ul></ul></ul></ul></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><ul><ul><ul><ul><li>Not a 'true statement' neither an equation to solve!! </li></ul></ul></ul></ul></ul></ul></ul></ul></ul>
    174. 174. Algorithm Example: largest number Pseudo-code (http://en.wikipedia.org/wiki/Pseudo-code) max = 0 for ( all i such that 0<i<|L|) { if ( L max < L i ) max = i } PRINT L m ax Loop Condition Assignment Output II. History/Theory Condition : two forms If (boolean expression) expression_if_true If (boolean expression) { expression_if_true }else{ expression_if_false }
    175. 175. Boolean Algebra (http://en.wikipedia.org/wiki/Boolean_algebra) <ul><li>Name in honour of George Boole (1825-1864)
    176. 176. Inventor of the Boolean Algebra </li><ul><li>Consider a set A, supplied with two binary operations ∧ (called AND), ∨ (called OR), a unary operation ¬ (called NOT) and two elements 0 (called zero) and 1 (called one), such that, for all elements a, b and c of set A, the following axioms hold: </li></ul></ul>II. History/Theory a ∨ (b ∨ c) = (a ∨ b) ∨ c associativity a ∧ (b ∧ c) = (a ∧ b) ∧ c a ∨ b = b ∨ a commutativity a ∧ b = b ∧ a a ∨ (a ∧ b) = a absorption a ∧ (a ∨ b) = a a ∨ (b ∧ c) = (a ∨ b) ∧ (a ∨ c) distributivity a ∧ (b ∨ c) = (a ∧ b) ∨ (a ∧ c) a ∨¬ a = 1 complements a ∧¬ a = 0
    177. 177. Boolean Algebra and Logic <ul><li>From that axioms, one can prove some theorem such as: a ∨ 0 = a; a ∧ 1 = a; a ∨ 1 = 1; a ∧ 0 = 0
    178. 178. Interpretation: </li><ul><li>0 means “FALSE”, 1 means “TRUE”
    179. 179. A statement 'a' and its contrary cannot both be true: a ∧¬ a = 0 </li></ul><li>Truth values can be represented as binary numbers or as voltage levels in logic circuits </li><ul><li>many practical applications in electrical engineering and CS, as well as in maths logic. </li></ul></ul>II. History/Theory
    180. 180. Boolean Expressions <ul><li>In computer science, a boolean expression evaluates only to either TRUE or FALSE </li><ul><li>Representation of truth values may differ from one language to another </li><ul><li>C: FALSE = 0, TRUE = ! FALSE
    181. 181. Java: TRUE= true , FALSE= false
    182. 182. LISP: FALSE= '(), TRUE= NOT FALSE, ... </li></ul></ul><li>A boolean expression can be almost anything... </li></ul>II. History/Theory 3>5 2<3 1 ≤ 1 F T T 1 ≤ 1 AND 2<3 2<3 OR 3>5 NOT 1 ≤ 1 T T F “bye” == “boa” “by” < “bye” NOT “by” F T ? Symbol for comparison in C Symbol for NOT in C
    183. 183. Boolean Operators Table II. History/Theory
    184. 184. Algorithm Example: largest number Pseudo-code (http://en.wikipedia.org/wiki/Pseudo-code) II. History/Theory PRINT “Hello” If (person has a PhD) PRINT “Dr.” PRINT name PRINT “Hello” If (person is a male) { PRINT “Mr.” }else{ PRINT “Mrs.” } PRINT name Execution for Dr.Pierre: “Hello Dr. Pierre” Execution for Mrs. Bhutto “Hello Mrs. Bhutto” Indentation and brackets are very important!
    185. 185. Algorithm Example: largest number Pseudo-code (http://en.wikipedia.org/wiki/Pseudo-code) max = 0 for ( all i such that 0<i<|L|) { if ( L max < L i ) max = i } PRINT m ax Loop Condition Assignment Output II. History/Theory Loop : many forms For (variable in “a finite set of values”) expression While (boolean expression) expression Do { expression } while (boolean expression) In all forms, you have a stop condition
    186. 186. Count-controlled loop (http://en.wikipedia.org/wiki/Control_flow) <ul><li>The loop is repeated a given number of times </li><ul><li>Called the “for-loop” in C language (and all its kids) </li></ul></ul>II. History/Theory READ n (from keyboard?) f = 1; for ( all i such that 0< i< n+1) { f = f * i; } Execution for n=4 f = 1*2*3*4 = 24 = 4! Is it smart to compute (n+1) on each loop ? READ n (from keyboard?) f = 1; bound = n+1 for ( all i such that 0< i< bound) { f = f * i; } Input Output?
    187. 187. Condition-controlled Loop (http://en.wikipedia.org/wiki/Control_flow) <ul><li>Loop repeats until a given condition change </li><ul><li>Two versions </li></ul></ul>II. History/Theory READ n; f = 1 while (n > 0) { f = f * n n = n - 1 } “While” Loop Condition checked at the beginning password = “I4m4g33k” do { PRINT “Enter the password:“ READ string } while (string != password); “Do-While” Loop Condition checked at the end
    188. 188. Algorithm Example: largest number Pseudo-code (http://en.wikipedia.org/wiki/Pseudo-code) max = 0 for ( all i such that 0<i<|L|) { if ( L max < L i ) max = i } PRINT m ax Loop Condition Assignment Output II. History/Theory Input/Output : many forms Input from keyboard, mice, file, network, parameters Output to screen, file, network, printer, returned values
    189. 189. Input/Output: Bad example Avoid interactions II. History/Theory PRINT “Size of the list?” READ size FROM KEYBOARD for ( all i such that 0<i<size) { L i = a random number } max = 0 for (all i such that 0<i<|L|) { if ( L max < L i ) max = i } PRINT L max ON SCREEN Algorithm Interactions List construction
    190. 190. Input/Output: Functions f(x) = 3x+2 g(M) = M' such that if M(x,y), M'(0,y) II. History/Theory Name Input Output Name Input Output Type of Input and Output! Guessed usually! Same thing in Pseudo-code!
    191. 191. Input/Output: Good example Use functions (subroutines) II. History/Theory Functions are defined by: <ul><ul><ul><ul><li>name
    192. 192. input (max?)
    193. 193. output (max?) </li></ul></ul></ul></ul>Function calls Name Input Output Unrelated variables Variables are only visible inside their enclosing block delimited by brackets
    194. 194. max = 0 for ( all i such that 0<i<|L|) { if ( L max < L i ) max = i } PRINT m ax Loop Condition Assignment Output Algorithm Example: largest number Pseudo-code (http://en.wikipedia.org/wiki/Pseudo-code) II. History/Theory Index is returned, not the actual value! Example: 31415 Value Printed is 4
    195. 195. Yes No Yes No Algorithm Example: largest number Flowchart (http://en.wikipedia.org/wiki/Flow_chart) II. History/Theory Should be explicit here! index = 0 max = index index < |L| ? L max < L index ? max = index index = index + 1 Start End return max Example: 27182 Largest: 3
    196. 196. Flowcharts – Common Symbols Symbol Name Terminal Process Flow-line Decision Input/Output Function Beginning or end of a program Flow of logic Calculation or data manipulation Comparison, Question, Decision that determines alternative paths to be followed Input or Output of data II. History/Theory
    197. 197. II. History/Theory Algorithm Example: largest number C-code (http://en.wikibooks.org/wiki/Computer_programming) int largest_index(numbers[] t, int n) { int i = 0; int max = i; for (i = 0; i < n; i++) { if (t[max] < t[i]) max = i; } return max; } Data Type List represented as an array Abbreviations: i++ means i = i +1 Statements end with a semi-colon
    198. 198. Back to Turing Machines <ul><li>We have seen that a Turing Machine is one representation of an algorithm </li><ul><li>There are other ways to represent algorithm
    199. 199. A string of characters can represent an algorithm </li><ul><li>Pseudo code or Programming Language </li></ul></ul><li>A TM needs an Input to work properly (as any algorithm)
    200. 200. So, given a string of characters, can we prove it is the actual representation of a TM?
    201. 201. Given a TM and a string, can we prove that the given string represents the given TM? </li></ul>II. History/Theory
    202. 202. The Halting Problem (Turing, 1936) Given a TM, say t, and its initial input, say n, can we construct another TM that determines whether t halts on 'n' (the alternative is that t runs forever). <ul><li>halt(t,n) == true if t halts on n, false otherwise.
    203. 203. Suppose that such a TM machine exists.
    204. 204. Consider: boolean trouble( s ) { if ( halt(s,s) == true ) { loop forever; // Implementation? else { return true; } } </li></ul>String representing an algorithm II. History/Theory
    205. 205. Halting Problem (Turing, 1936) <ul><li>trouble() takes the string 's' (representing an algorithm) and gives it to the (supposed existing) function halt() both as the the algorithm to check and as its initial input.
    206. 206. Consider the string 't' that represents the algorithm trouble()
    207. 207. If trouble(t) halts (it returns true ) </li><ul><li>halt(t,t) returns false , hence trouble(t) does not halt! </li></ul><li>If trouble(t) does not halt </li><ul><li>halt(t,t) returns true , hence trouble(t) does halt! </li></ul></ul>II. History/Theory
    208. 208. Halting Problem (Turing, 1936) <ul><li>The Halting Problem is undecidable in the Turing system </li><ul><li>And also in any other computation model that is equivalent ( Markov algorithms, Lambda calculus, ... ) </li></ul><li>Many other problems are undecidable </li><ul><li>Proved by reduction : </li><ul><li>we don't know if a given problem is decidable or not.
    209. 209. we prove that solving this problem is equivalent to solving the HT problem.
    210. 210. So it is also undecidable! </li></ul><li>Informally, such problems cannot be solved in general by computers </li></ul></ul>II. History/Theory
    211. 211. Decision Problems (http://en.wikipedia.org/wiki/Decision_problem) <ul><li>A decision problem is a question in some formal system with a yes-or-no answer.
    212. 212. Problems with more complex answers are called function problems.
    213. 213. The problem itself is distinct from the methods used to solve it, called algorithms.
    214. 214. A decision problem which can be solved by some algorithm is called decidable .
    215. 215. Example: </li><ul><li>&quot;Given two numbers x and y, does x evenly divide y?&quot;. </li></ul></ul>II. History/Theory
    216. 216. Computability Theory (http://en.wikipedia.org/wiki/Recursion_theory http://en.wikipedia.org/wiki/Computability_theory_(computer_science)) <ul><li>Which problems are computationally solvable using different models of computation.
    217. 217. Do not deal with how efficiently a problem can be solved, rather than whether it is solvable at all </li><ul><li>The amount of resources is not take into account </li></ul><li>Formal models of computation have been defined </li><ul><li>TM is only one of them </li></ul><li>Classification of unsolvable problems </li><ul><li>Turing degree (degree of unsolvability) </li></ul></ul>II. History/Theory
    218. 218. Church's Lambda Calculus (1936) (http://en.wikipedia.org/wiki/Lambda_calculus) <ul><li>Formal system designed to investigate function definition, function application, and recursion.
    219. 219. Every expression stands for a function with a single argument </li><ul><li>f(x) = x + 2 -->  x. x+2 f(1)=3 --> (  x. x+2) 1=1+2=3
    220. 220. g(x,y)=x-y -->  x. ( y . x-y)=  x y . x-y; g(3,2)=1--> (  x y . x-y)) 3 2 = ( y . 3-y) 2 = 3-2 = 1
    221. 221. g(f(1),f(0)) = f(1)-f(0) = (1+2)-(0+2) = 3+2 = 5 --> (  x y . x-y) ((  x. x+2) 1) ((  x. x+2) 0) </li></ul></ul>Returns a number Returns a function II. History/Theory
    222. 222. Church's Lambda Calculus (1936) (http://en.wikipedia.org/wiki/Lambda_calculus) <ul><li>(  xy. x - y) 7 2; (  y. 7 - y) 2 and 7 - 2 are equivalent
    223. 223. This equivalence of lambda expressions can not be decided by an algorithm in general
    224. 224. Consider: (  x. x x) (  x. x x) --> No reduction!
    225. 225. Logic and predicates TRUE :=  xy. x, FALSE :=  xy. y AND :=  pq. p q FALSE, OR :=  pq. p TRUE q NOT :=  p. p FALSE TRUE, IFTHENELSE :=  pxy. p x y </li></ul>II. History/Theory
    226. 226. Basis of Programming Languages <ul><li>Turing Machine leads to usual representation of algorithms </li><ul><li>expressed in an iterative way, in sequences of well defined steps </li></ul><li> -calculus leads to another way of expressing algorithms </li><ul><li>expressed using only functions
    227. 227. Use recursivity extensively </li></ul><li>Same expressive power than Turing Machine </li><ul><li>Proven! </li></ul></ul>II. History/Theory
    228. 228. II. History/Theory Functionnal language Example (http://en.wikibooks.org/wiki/Computer_programming) (defun f (n) (if (< n 2) 1 (* n (f (- n 1))) ) ) Only functions Prefix notation Recursive call Inferred!
    229. 229. Church-Turing Thesis (http://en.wikipedia.org/wiki/Church-Turing_thesis) <ul><li>hypothesis about the nature of computers </li><ul><li>digital computer
    230. 230. human with a pencil and a paper following a set of rules. </li></ul><li>claims that any calculation that is possible can be performed by an algorithm running on a computer, provided that sufficient time and storage space are available. </li><ul><li>may be regarded as a physical law or as a definition, as it has not been mathematically proven. </li></ul></ul>II. History/Theory
    231. 231. The Art of Computer Programming (http://en.wikipedia.org/wiki/The_Art_of_Computer_Programming) <ul><ul><li>Monograph written by Donald. E. Knuth </li></ul></ul><ul><ul><ul><li>Started in 1962
    232. 232. 2006: 7 Volumes ! </li></ul></ul></ul><ul><ul><li>Considered by the American Scientist as one of the best twelve physical-science monographs of the 21 th century
    233. 233. Computer science community regards it as the first and still the best comprehensive treatment of its subject.
    234. 234. Bill Gates: &quot;If you think you're a really good programmer... read (Knuth's) book...You should ... send me a resume if you can read the whole thing.&quot; </li></ul></ul>II. History/Theory
    235. 235. <ul><ul><li>Gives solutions to common programming problems found in computer sciences </li><ul><li>Data structures, sorting, searching, lexical analysis, graphs, ... </li></ul><li>Complexity analysis of each solution is also described </li><ul><li>Example: number of steps required to sort a list </li></ul><li>Algorithms are written in pseudo-assembly language called MIX </li><ul><li>May be hard to understand </li></ul><li>Accessible algorithms textbooks use high-level languages </li></ul></ul>II. History/Theory The Art of Computer Programming
    236. 236. Complexity Theory (http://en.wikipedia.org/wiki/Computational_complexity_theory) <ul><li>Study the resources, or cost , of the computation required to solve a given computational problem.
    237. 237. Cost is measured in terms of abstract parameters such as time and space </li><ul><li>computational resources . </li></ul><li>Time: number of steps required
    238. 238. Space: quantity of information storage required
    239. 239. A Complexity Class is the set of all of the problems which can be solved using a certain amount of a certain computational resource. </li></ul>II. History/Theory
    240. 240. Complexity Theory (http://en.wikipedia.org/wiki/Computational_complexity_theory) <ul><li>Tradeoffs between time and space
    241. 241. Alternative algorithm may require less time but more space (or vice versa) to solve a given problem.
    242. 242. Parallel processors can also be considered. </li><ul><li>&quot;parallelizable time&quot; and &quot;non-parallelizable time&quot; ( i.e. s equential time ) are considered.
    243. 243. Sequential time gives a limit to how far the computation can be parallelized. Some steps must be done sequentially because they depend on the results of previous steps. </li></ul></ul>II. History/Theory
    244. 244. Practical Complexities II. History/Theory
    245. 245. Practical Complexities II. History/Theory
    246. 246. Complexities Consequences <ul><li>www.top500.org : best computers in the world
    247. 247. 2006: next generation will be beyond PetaFLOPS/s </li><ul><li>10 ^12 instructions per second! </li></ul><li>For a problem of “size” 100 </li><ul><li>Algorithm in n 2 instructions requires 100*100 = 10,000 instructions, less than 1 second
    248. 248. Algorithm in 2 n requires 2 100 instructions
    249. 249. 2 100 > 10 ^30 instructions, more than 400 millions of years of computation!! </li></ul></ul>II. History/Theory
    250. 250. Example: Travelling Salesman Problem (TSP) <ul><li>Given: </li><ul><li>a set of cities,
    251. 251. the distance between them </li></ul><li>Find the cheapest round-trip route that visits each city exactly once and then returns to the starting city </li></ul>II. History/Theory
    252. 252. Polynomial Complexity Class: P (http://en.wikipedia.org/wiki/P_(complexity)) <ul><li>P is the set of decision problems that can be solved by a TM in polynomial time. </li><ul><li>Intuitively, set of problems which can be effectively solved in the worst cases </li></ul><li>Examples: </li><ul><li>Greatest Common Divider,
    253. 253. Sorting, Searching, Merging, ...
    254. 254. “is a number prime” (proven in 2002) </li></ul><li>Majority of problems in P are “practically feasibles” </li><ul><li>Rare are the ones that needs n 10000 steps! </li></ul></ul>II. History/Theory
    255. 255. Non-deterministic Polynomial Complexity Class: NP (http://en.wikipedia.org/wiki/NP_(complexity)) <ul><li>The complexity class NP is the set of decision problems that can be &quot; verified &quot; by a TM in polynomial time </li><ul><li>They may not be solved by a TM in polynomial time but the answer should be checkable efficiently (in polynomial time) </li></ul><li>Examples: </li><ul><li>Integer factorization
    256. 256. Decision version of the TSP (is there a route with cost < x?)
    257. 257. Subset-sum problem (is there any subset of {-2, -3, 15, 14, 7, -10} that sum to zero? </li></ul></ul>II. History/Theory
    258. 258. P vs NP (http://en.wikipedia.org/wiki/Complexity_classes_P_and_NP) <ul><li>P: the set of “easy to solve” problems
    259. 259. NP: the set of “easy to check” problems
    260. 260. P ⊆ NP </li><ul><li>Easy to solve problem are also easy to check!
    261. 261. Is the reverse true: is P ⊇ NP, hence is P == NP? </li><ul><li>Is an easy to check problem, easy to solve? </li></ul></ul><li>Concept of NP-completeness </li><ul><li>NP-complete problems are the most difficult problems in NP </li></ul></ul>II. History/Theory
    262. 262. NP-Complete Problems (http://en.wikipedia.org/wiki/NP-complete) <ul><li>A decision problem C is NP-C if: </li><ul><li>it is in NP and it is NP-hard (every other problem in NP is reducible in polynomial time to it)
    263. 263. A reduction is a transformation of one problem into another problem. </li><ul><li>Intuitively, if problem A is reducible to problem B, a solution to B gives a solution to A. Thus solving A cannot be harder than solving B (we write A ≤ B) </li></ul></ul><li>TSP is NP-Complete </li><ul><li>So any instance of any problem in NP can be transformed mechanically into an instance of the TSP problem in polynomial time!! </li></ul></ul>II. History/Theory
    264. 264. Consequences <ul><li>If one find a polynomial algorithm that solves TSP, then polynomial algorithms can be provided for any other problems in NP </li></ul>II. History/Theory
    265. 265. List of NP-C Problems (http://en.wikipedia.org/wiki/List_of_NP-complete_problems) <ul><li>First NP-C by Cook in 1971 </li><ul><li>The boolean satisfiability problem (very complex proof)
    266. 266. Proof by reduction was then used to show than many other problems are NP-C (more than 3000 are known to be NP-C problems)!
    267. 267. TSP is just one of them </li></ul><li>Many important problems are NP-C </li><ul><li>Mathematics, Physics, Computer Sciences, Biology, Finance, ... </li></ul></ul>II. History/Theory
    268. 268. The big question: is P == NP ? <ul><li>Not a single fast algorithm for any of the known NP-C problem is known
    269. 269. Hence, we don't know if P==NP </li><ul><li>Unsolved question in theoretical computer science.
    270. 270. One of the most important unsolved problems in all mathematics.
    271. 271. The Clay Mathematics Institute has offered a USD 1,000,000 prize for a correct solution.
    272. 272. 2002: poll of 100 researchers: 61 no, 9 yes, 22 unsure, 8 impossible to prove or disprove! </li></ul></ul>II. History/Theory
    273. 273. Theory of Computation (http://en.wikipedia.org/wiki/Theory_of_comp) <ul><li>Two major fields
    274. 274. Computability theory (Turing, Church, Bool) </li><ul><li>Is a given problem computable? </li></ul><li>Complexity Theory (Knuth et al. ) </li><ul><li>How much ressources (instructions, storage) are required to compute a solution for a given problem?
    275. 275. Some problems are theorically computable but seems practically unfeasible (take centuries even with the tomorrow best machine available). </li><ul><li>Example: Factorisation of big prime numbers (crypto)
    276. 276. Still not proven today! </li></ul></ul></ul>II. History/Theory
    277. 277. http://en.wikipedia.org/wiki/History_of_programming_languages II. History
    278. 278. Programming Languages (http://en.wikipedia.org/wiki/Programming_languages) <ul><li>Writing program in the machine language – called assembly language -- is painful and error prone
    279. 279. Define languages that are more or less human friendly </li><ul><li>Use a syntax , a grammar and define the semantic </li></ul><li>Translate human-friendly languages into machine language </li><ul><li>Compilation: translate entirely, then execute
    280. 280. Interpretation: translate partially, then execute (repeat until the end of the program) </li></ul></ul>II. History/Languages
    281. 281. Compilation vs Interpretation (http://en.wikipedia.org/wiki/Interpreted_language http://en.wikipedia.org/wiki/Compiled_language) Source file Executable file II. History/Languages Operating System X=20; while(X > 0) { PRINT X; X := X-1; } 011001010110110110100101011010101011001100110010101011011001010100011000001110101010101001 Compiler Interpretor X=20->0110 While->1010 Executable file running
    282. 282. Compilation vs Interpretation (http://en.wikipedia.org/wiki/Interpreted_language http://en.wikipedia.org/wiki/Compiled_language) <ul><li>In theory, any language can be interpreted or compiled (implementation problem)
    283. 283. In practice, language designers make choices that ease either interpretation or compilation </li><ul><ul><li>Static variable type declaration (i.e. number, characters) </li></ul></ul><li>Compilation </li><ul><li>Pros: speed, error checking
    284. 284. Cons: complexity, long edit-run cycles </li></ul><li>Interpretation </li><ul><li>Pros: short edit-run cycles, flexibility
    285. 285. Cons: slow, lack of checks </li></ul></ul>II. History/Languages
    286. 286. Mixed mode <ul><li>Compile source code into a bytecode </li><ul><li>Perform all required checks
    287. 287. Bytecode is independent of any real hardware architecture </li></ul><li>Interpret the bytecode </li><ul><li>A bytecode interpreter is required on each hardware you want to run your (compiled) program on </li></ul><li>Write once, run anywhere </li><ul><li>This is called transportability: only the bytecode is needed to execute a program, neither the source nor the machine dependant code. </li></ul></ul>II. History/Languages
    288. 288. Programming Paradigms ( http://en.wikipedia.org/wiki/Programming_paradigm) <ul><li>Logic Programming </li><ul><li>Define assertions to find a goal
    289. 289. Based (roughly) on the Boolean Algebra </li></ul><li>Imperative languages </li><ul><li>List of statements that change a program state
    290. 290. Based on the Turing Machine model </li></ul><li>Functional languages </li><ul><li>Sequence of stateless function evaluations
    291. 291. Based on the Church  -calculus </li></ul></ul>II. History/Languages
    292. 292. Type System (http://en.wikipedia.org/wiki/Type_system) <ul><li>Anything in a computer is represented by 0&1 </li><ul><li>How to distinguish 11 10 (eleven), 11 2 (three), and “11” the string of two characters '1' and '1'?
    293. 293. A type give a meaning to a collection of bits </li><ul><li>inform programs and programmers how they should treat a given collection of bits.
    294. 294. hardware makes no distinction between memory addresses, instruction code, characters, integers and floating-point numbers. </li></ul></ul></ul>II. History/Languages
    295. 295. Type Functions <ul><li>Safety </li><ul><li>“Hello World”/3 is meaningless </li></ul><li>Documentation </li><ul><li>“ Integer x = 24; ” versus “ Age x = 24; ” </li></ul><li>Abstraction </li><ul><ul><li>e.g: “ String ” represents an abstract data type
    296. 296. The underlying implementation (typically) uses an array of characters
    297. 297. Functions can be defined on String without any knowledge of their actual representation </li><ul><li>Substring(String s, String p), Match(String s, String p), getChar(Index i), ... </li></ul></ul></ul></ul>II. History/Languages
    298. 298. Type Checking <ul><li>Verify and enforce the constraints of types
    299. 299. Static type checking </li><ul><li>At compile time </li></ul><li>Dynamic type checking </li><ul><li>At runtime </li></ul></ul>II. History/Languages
    300. 300. Static vs Dynamic <ul><li>Static Pros </li><ul><li>Reliability
    301. 301. Optimisation for runtime speed
    302. 302. Documentation </li></ul><li>Static Cons </li><ul><li>More things to write
    303. 303. Illusion that the code is safe
    304. 304. Longer Edit-Compile-Test-Debug cycle </li></ul></ul><ul><li>Dynamic Pros </li><ul><li>Rapid prototyping
    305. 305. Edit-compile-test-debug cycle reduced
    306. 306. Generic constructions (eval function over anything)
    307. 307. Metaprogramming easy </li></ul><li>Dynamic Cons </li><ul><li>Runtime speed </li></ul></ul>II. History/Languages
    308. 308. Strong vs Weak Typing II. History/Languages
    309. 309. Primitive Types ( http://en.wikipedia.org/wiki/Primitive_type ) <ul><li>Basic building block </li><ul><li>Any other data type is a composition of primitive types
    310. 310. Integer, booleans, characters, floating point numbers
    311. 311. Reference </li><ul><li>An abstract value refering to another object's possibly a much larger one. </li></ul></ul><li>Operations on primitive types are usually mapped to direct machine instruction </li><ul><li>Fastest operation available </li></ul></ul>II. History/Languages
    312. 312. Primitive Type Representation in C (Int, Bool & Char) <ul><li>Integer: binary notation on 32 bits </li><ul><li>Signed [-2 31 , 2 31 -1] & unsigned [0,2 32 -1] </li></ul><li>Boolean: FALSE == 0, TRUE == !FALSE
    313. 313. Character: encoding in ASCII (1 byte) </li><ul><li>33 non-printable characters (ENTER, DELETE, ...) </li><ul><li>Control characters </li></ul><li>95 printable characters inluding space !&quot;#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_` abcdefghijklmnopqrstuvwxyz{|}~ </li></ul></ul>II. History/Languages
    314. 314. ASCII Table (http://en.wikipedia.org/wiki/ASCII) <ul><li>Only 127 values </li><ul><li>Only English
    315. 315. Extensions to 255 values </li><ul><li>Spanish, French, ... </li></ul></ul><li>Unicode is a better encoding </li><ul><ul><li>16 bits, 65536 values
    316. 316. Any language in the world!
    317. 317. Supported by new OS and languages </li></ul></ul></ul>II. History/Languages
    318. 318. Real numbers and other-than-decimal bases <ul><li>How to represent 0.1 in base 2? </li><ul><li>320.14 = 3.10²+2.10 1 +0.10 0 +1.10 -1 +4.10 -2
    319. 319. so, in a base b, we have (a n ...a 1 a 0 .c 1 c 2 ...) b = a n .b n +...+a 1 .b 1 +a 0 .b 0 +c 1 .b -1 +c 2 .b -2 +...
    320. 320. (0.1) 10 =(1) 10 /(10) 10 =(1) 2 /(1010) 2 =(0.000110011001100 ....) 2 =(0.00220022...) 3 =(0.01212...) 4 ...
    321. 321. (1/3) 10 =(0.33...) 10 =(0.1) 3 </li></ul><li>p =(11.0010010000111111011010101...) 2 </li></ul>II. History/Languages
    322. 322. The IEEE 754 standard <ul><ul><li>Float: 32 bits, double: 64 bits </li></ul></ul>II. History/Languages <ul><ul><li>Mantissa is normalized : always a '1' before the comma (hidden bit) 0.0000111010x2 0 0.000000111010x2 2 1.111010x2 -5 </li></ul></ul>all represent the same number! <ul><ul><li>Exponent is biased: only positive values [-127,128]=[0,255]-127 </li></ul></ul>
    323. 323. IEEE 754 Standard Example <ul><li>Consider only 5 bits (1,2,2) biased is 1 </li></ul>All Positive Numbers II. History/Languages 2 1 3 4 5 6 7 0 1.5 1.25 1.75 2.5 3.5 0.875 0.5 0.75 0.625 -0.5
    324. 324. <ul><li>No representation for 0 (zero) </li><ul><li>Reserve 0 00 00 and 1 00 00 for (+0 & -0) (symetric)
    325. 325. We lose +0.5 and -0.5 </li></ul></ul>IEEE 754 Standard Example Problems & Solutions II. History/Languages 2 1 3 4 5 6 7 1.5 1.25 1.75 2.5 3.5 0.875 0 0.75 0.625 -0.625
    326. 326. <ul><li>Big hole around 0 </li><ul><li>Reserve 'e=0' for denormalized number </li><ul><li>The hidden bit is '0' in this case: 0.2 0 +(m) 0 00 01 = 0.2 0 +0.2 -1 +1.2 -2 =0.25 0 00 10 = 0.2 0 +1.2 -1 +0.2 -2 =0.5 0 00 11 = 0.2 0 +1.2 -1 +1.2 -2 =0.75 </li></ul></ul></ul>IEEE 754 Standard Example Problems & Solutions II. History/Languages 2 1 3 4 5 6 7 1.5 1.25 1.75 2.5 3.5 0 0.75 0.5 -0.25 -0.5 0.25 -0.75
    327. 327. <ul><li>Define meaning for infinite and indefinite </li><ul><li>Reserve e=3 for that purpose </li></ul></ul>IEEE 754 Standard Example Problems & Solutions II. History/Languages 2 1 3 1.5 1.25 1.75 2.5 3.5 0 0.75 0.5 -0.25 -0.5 0.25 -0.75
    328. 328. <ul><ul><li>Even if we cannot represent all integers (infinite), we can represent correctly a small interval </li></ul><li>With real numbers, it is not possible!! </li><ul><ul><li>Between two reals, you can always find a new one!
    329. 329. So we can only represent a subset of rationals ( ℚ ) </li></ul><li>Computing with floating points is very time consuming </li><ul><li>Specific hardware for that purpose (integrated FPU)
    330. 330. Floating Point Operations/second (Flops) is a standard metric of processor performance.
    331. 331. 2006: IBM Blue Gene: 65536 Dual-Processor (PowerPC ) 360 TeraFLOPS! </li></ul></ul></ul>Problems with the representation of real numbers II. History/Languages
    332. 332. Primitive Type Representation in C (pointers) <ul><li>References are implemented as pointers </li><ul><li>Pair (a,t) where:
    333. 333. a : is an integer representing a RAM cell address
    334. 334. t : is a type that gives the interpretation of the memory cells that starts from address a </li><ul><li>t is mandatory , how can you know how to interpret the data at the given address 'a' otherwise? </li></ul></ul></ul>II. History/Languages
    335. 335. <ul><ul><li>'int* p': declares a reference (a pointer) called p on an 'int' value </li><ul><li>'p' holds a number (a positive integer called a word) </li></ul><li>'&v' is the address of the variable v in the RAM </li><ul><li>It is a number (a positive integer called a word) </li></ul><li>*p holds the value contained in the cell at address 'p' </li></ul></ul>Primitive Type Representation in C (pointers) II. History/Languages
    336. 336. char c = 'A'; char* pc = &c; *(pc+1)='C'; *((int *) (pc)) = 'D'; &pc &c *pc = 'B'; Using Pointers (in C) '&' == &quot;address of&quot; II. History/Languages 65 ? ? ? &c 66 67 ? ? &c 65 ? ? ? 0 0 0 68 &c 66 ? ? ? &c
    337. 337. Pointers Manipulation <ul><li>The pointer concept is a very efficient mechanism to manipulate directly the memory </li><ul><li>Almost everything is possible </li><ul><li>Used for system programming
    338. 338. Also responsible for the vast majority of bugs </li></ul><li>New trend is to forbid the use of pointers (Java, C#) </li></ul><li>In C, arrays, functions and strings are de facto pointers </li><ul><li>char * s = &quot;Hello World&quot;;
    339. 339. char[] c = s; *(c+1) = '3'; printf(s); --> H3llo World </li></ul></ul>II. History/Languages
    340. 340. Important Languages <ul><li>1954 – FORTRAN (imp., comp., static, strong) </li><ul><li>Designed for scientist
    341. 341. Versions for Parallel Machine </li></ul><li>1958 – LISP (func., inter & comp, dyn, strong) </li><ul><li>Based on - calculus
    342. 342. Used in Artificial Intelligence </li></ul><li>1959 – COBOL (irrelevant, comp, static, strong) </li><ul><li>For Business
    343. 343. Still widely used but no more learnt </li></ul></ul>II. History/Languages
    344. 344. Important Languages <ul><li>1964 – BASIC (imp, inter. & comp, static, weak) </li><ul><li>For beginner </li></ul><li>1970 – Pascal (imp, comp, static, strong) </li><ul><li>Structured programming </li></ul><li>1972 – C (imp, comp, static, weak) </li><ul><li>System programming
    345. 345. UNIX Systems (and Linux) are written in C
    346. 346. Gnome is written in C </li></ul><li>1972 – Smalltalk (imp, mixed, dynamic, strong) </li><ul><li>Object Oriented (OO) Programming </li></ul></ul>II. History/Languages
    347. 347. Important Languages <ul><li>1972 – Prolog (logic, inter, dynamic, strong) </li><ul><li>Based on Boolean Algebra
    348. 348. Natural language processing </li></ul><li>1978 – SQL (irrelevant, inter, dynamic, strong) </li><ul><li>Database oriented languages (Query) </li></ul><li>1983 – Ada (imp, comp, static, strong) </li><ul><li>Embedded and real-time systems
    349. 349. Ariane space launcher </li></ul></ul>II. History/Languages
    350. 350. Important Languages <ul><li>1983 – C++ (imp, comp, static, ~strong) </li><ul><li>Patchwork of C ;-)
    351. 351. Claim to be an OO Language ;-)
    352. 352. Widely used because of Microsoft adoption
    353. 353. Windows (95, 98, NT, XP) is written in C++
    354. 354. KDE is also written in C++ </li></ul><li>1985 – Eiffel (imp, comp, static, strong) </li><ul><li>True OO Language!
    355. 355. Design by contract (software quality) </li></ul></ul>II. History/Languages
    356. 356. Important Languages <ul><li>1987 – Perl (imp, inter, dynamic, weak) </li><ul><ul><li>Easy & Widely used by web designers </li></ul></ul><li>1995 – Java (imp, mixed, static & dyn, strong) </li><ul><ul><li>“ write once, run anywhere” language
    357. 357. Widely used (smartcards to supercomputers)
    358. 358. Object Oriented </li></ul></ul><li>2000 – C# (imp, mixed, static & dyn, strong) </li><ul><ul><li>Microsoft defence against Java
    359. 359. Similar to Java on many aspects </li></ul></ul></ul>II. History/Languages
    360. 360. Language Trends <ul><li>Ruby </li><ul><li>Multi-paradigm programming language </li></ul><li>Concurrency and distribution </li><ul><li>E: java based
    361. 361. C : microsoft based </li></ul><li>And many others... </li></ul>II. History/Languages
    362. 362. II. History
    363. 363. Objectives <ul><li>Theories provide strong fondations to: </li><ul><li>Express algorithms (TM,  -calculus, ...)
    364. 364. To analyse them (Computability/Complexity) </li></ul><li>Languages have been defined to help in the writing of programs (hence algorithms)
    365. 365. Even if not required, a computer system usually has an operating system. </li></ul>II. History/OS
    366. 366. OS definition <ul><li>No widely admitted definition
    367. 367. Fact: a computer is made of several parts </li><ul><li>devices (keyboard, hard drive, memory, CPU, ...)
    368. 368. programming them is a very complex task </li><ul><li>the OS provides an abstract view of the real machine that is much simpler to program </li><ul><li>Data on an hard drive is seen as an organized collection of files instead of a collection of bits </li></ul></ul><li>their management should be optimal </li><ul><li>the OS handles all different resources for the user </li><ul><li>If three print jobs are simultaneously submitted on the same printer, they should be queued </li></ul></ul></ul></ul>II. History/OS
    369. 369. OS composition <ul><li>kernel (strictly equal to OS) </li><ul><li>handles resources and provides the abstract “easy to program” machine </li></ul><li>shell </li><ul><li>interaction with the user through command line
    370. 370. Syntax: command -option parameter </li><ul><li>e.g: mail -u [email_address] “Mail example” </li></ul></ul><li>Applications for System Administration </li><ul><li>Managing user accounts
    371. 371. Managing storage spaces
    372. 372. Managing devices </li></ul></ul>II. History/OS
    373. 373. OS composition <ul><li>Graphical User Interface is not (and should not) be part of an OS </li><ul><li>code complexity
    374. 374. security </li></ul><li>GUI provides a user-friendly way of using a computer
    375. 375. Some OS neither have a shell nor a GUI </li><ul><li>Embedded devices (satellite, smart cards, ...) </li></ul></ul>II. History/OS
    376. 376. pre-Multics systems <ul><li>1950: computers were giant personal computers </li><ul><ul><li>Only one user at a given time </li></ul></ul><li>1960: Batch systems </li><ul><ul><li>Users submit their job to the operator (cards)
    377. 377. Operator groups jobs into batch and enter them for execution
    378. 378. Most of the time, the CPU is idle waiting for some input (user, disk, network, ...) </li></ul></ul><li>1962: Time sharing (CTSS at the MIT) </li><ul><ul><li>When the CPU is idle for one job/user, execute/resume another one </li></ul></ul></ul>II. History/OS
    379. 379. Market evolution: Multics <ul><li>1964: Success of CTSS leads to Multics </li><ul><ul><li>By the MIT, Bell Labs and General Electric
    380. 380. Very advanced operating system </li><ul><li>Hundreds of users on a pre-Pentium machine (Intel 386)!
    381. 381. Hardware components could be added at runtime (even CPU) </li></ul><li>Not a success anyway: too much in advance! ;-(
    382. 382. Many ideas of current operating systems comes from it!
    383. 383. Highly influential! </li></ul></ul><li>1970: Unix comes out from Ken Thompson </li><ul><ul><li>Worked at Bell on Multics before Bell pulled out
    384. 384. He developed a smaller Multics version called Unics, that should do only one thing, but do it well. </li></ul></ul></ul>II. History/OS
    385. 385. Market evolution: the Unix fashion <ul><li>1974: Research paper by Ritchie & Thompson </li><ul><ul><li>Describe the Unix system (re)-written in the C language
    386. 386. Received the prestigious ACM Turing Award
    387. 387. Many universities asked for a copy of Unix </li></ul></ul><li>Unix: widely adopted </li><ul><ul><li>Availability of the source code: modifications by any one to fit the needs
    388. 388. USENIX Conferences --> lots of enhancements </li></ul></ul><li>80's: The Portability Chaos </li><ul><ul><li>Many Unix existed (and still exist), some are incompatibles --> POSIX (Portable Operating System)
    389. 389. Commercial failure for IBM, Sun, Bell, ... and Microsoft! </li></ul></ul></ul>II. History/OS
    390. 390. Unix Wars II. History/OS
    391. 391. The Home Computer Era (http://en.wikipedia.org/wiki/History_of_computing_hardware_(1960s-present)) <ul><li>1973: Xerox Alto mini-computer </li><ul><li>first mouse and GUI concept </li></ul><li>1975: MITS Altair 8800 first home computer </li><ul><li>Great success: 10,000 shipped
    392. 392. Paul Allen and Bill Gates developed a BASIC interpreter for the Altair, and then formed Microsoft.
    393. 393. CP/M-80 is the OS developed by Digital Research </li></ul><li>1977: Apple II phenomenon </li><ul><li>Steve Jobs founded Apple Computer.
    394. 394. Color graphics, open architecture, floppy disk drive </li></ul></ul>II. History/OS
    395. 395. The IBM Personal Computer Era (http://en.wikipedia.org/wiki/History_of_computing_hardware_(1960s-present)) <ul><li>Many other concurrent </li><ul><li>Commodore, Atari, Amiga, ...
    396. 396. Closed architecture --> disappeared </li></ul><li>1981: IBM PC model </li><ul><li>IBM replied to Apple
    397. 397. Open architecture
    398. 398. Uses Intel 8088 processor
    399. 399. OS: MS-DOS provided by Microsoft </li><ul><li>MS-DOS is based on QDOS, a CP/M compatible OS which Microsoft had obtained the copyrights.
    400. 400. Digital Research refused to provide CP/M to IBM in 1980 </li></ul></ul></ul>II. History/OS
    401. 401. The Mac Era (http://en.wikipedia.org/wiki/History_of_computing_hardware_(1960s-present) http://en.wikipedia.org/wiki/Apple_Computer) <ul><li>1981: Xerox Star </li><ul><li>Bit-mapped display, windows-based GUI, icons, folders, mouse, Ethernet networking, file servers, print servers and e-mail. </li></ul><li>1984: Apple Macintosh </li><ul><li>First mass-marketed microcomputer with a GUI
    402. 402. Standard for the personal computer for years </li></ul><li>Until 1990 in the IBM PC world </li><ul><li>Gaming is the big market
    403. 403. It requires power --> faster CPU, bigger RAM, ... </li></ul></ul>II. History/OS
    404. 404. The Microsoft Era (http://en.wikipedia.org/wiki/Microsoft_Windows http://en.wikipedia.org/wiki/Windows_NT) <ul><li>1990: Windows 3.0 by Microsoft </li><ul><li>First GUI in the IBM PC world
    405. 405. On top of MS-DOS (highly limited) </li></ul><li>1995: Windows 95, 1998: Windows 98 </li><ul><li>Still based on MS-DOS
    406. 406. End of Apple domination until 1998 with the iMac series by Steve Jobs </li></ul><li>1993: Windows NT 3.1 </li><ul><li>Fully 32-bits OS written from scratch
    407. 407. Uses concepts derived from DEC VAX OS </li></ul><li>2001: Windows XP, is in fact NT v 5.1 </li></ul>II. History/OS
    408. 408. The Open Source Revolution (http://en.wikipedia.org/wiki/GNU) <ul><li>1983: Richard Stallman quit its job at MIT </li><ul><li>Refused to work in a closed environment
    409. 409. Creates the GNU project: a free operating system </li><ul><li>Free as in free speech: free to study and modify the code as it was in the 60's and 70's </li></ul></ul><li>1985: RS creates the Free Software Foundation
    410. 410. 1989: Creation of the GNU Public Licence </li><ul><li>Basically, you can redistribute (even a modified version of) a GPL software but with its code
    411. 411. Virus-like licence
    412. 412. You can sell a GPL software (Redhat, Suse, ...) </li></ul></ul>II. History/OS
    413. 413. The GNU Project (http://en.wikipedia.org/wiki/GNU) <ul><li>GNU means Gnu's Not UNIX (recursive) </li><ul><li>Should be UNIX compatible anyway
    414. 414. GNU Hurd will be the name of the kernel </li></ul><li>1990: GNU System almost complete </li><ul><li>Compiler: GNU C Compiler
    415. 415. Editor: GNU Emacs
    416. 416. All other parts (shell, libraries, GUI, ...)
    417. 417. A lot have been done but, the kernel (Hurd) is the only piece that is missing... </li></ul></ul>II. History/OS
    418. 418. The Linux Kernel (http://en.wikipedia.org/wiki/Linux_kernel) <ul><li>August 1991: Linus Torvalds posts in Internet </li><ul><li>“ I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. [...] I'd like any feedback [...]. ”
    419. 419. He wrote a kernel, using all the GNU tools
    420. 420. A kernel was the only thing that GNU was lacking to become operational </li></ul><li>Evolution: </li><ul><li>1991: v 0.01 (10,239 lines of code)
    421. 421. 2006: v (6,981,110 lines of code) </li></ul><li>Big support from IBM, HP, ... </li></ul>II. History/OS
    422. 422. GNU/Linux Distributions (http://en.wikipedia.org/wiki/Comparison_of_Linux_distributions http://en.wikipedia.org/wiki/Linux) <ul><li>Distribution: GNU + linux kernel + tools for system administration </li><ul><li>Installing the system
    423. 423. Installing, upgrading, removing softwares
    424. 424. Configuring softwares </li></ul><li>Many flavors </li><ul><li>User friendly: Fedora, Mandrake, Suse, Ubuntu
    425. 425. LiveCD: Knoppix, Mandrake-CD
    426. 426. Stability: Debian
    427. 427. Source based: Gentoo </li></ul></ul>II. History/OS
    428. 428. Other open source UNIX projects <ul><li>BSD based (Open source) </li><ul><li>FreeBSD (Optimized for x86)
    429. 429. NetBSD (Portable)
    430. 430. OpenBSD (Security) </li></ul><li>Sun Solaris (Open Source) </li><ul><li>For SPARC and x86
    431. 431. Designed for the industry (stable, ...) </li></ul><li>And many others... </li></ul>II. History/OS
    432. 432. Open Source Equivalences (http://en.wikipedia.org/wiki/List_of_open_source_software_packages) <ul><ul><li>GUI: Windows (Microsoft), Darwin (Mac OS X) </li><ul><li>KDE, GNOME, CDE, Enlightenment, ... </li></ul><li>Web Browsers: IE (Microsoft), Safari (Mac OS X) </li><ul><li>Firefox (available on Windows), Konqueror </li></ul><li>Email: Outlook (Microsoft) </li><ul><li>Evolution, Kmail </li></ul><li>Office Suite: MS Office (Microsoft) </li><ul><li>OpenOffice (available on Windows), KOffice </li></ul><li>Image Manipulation: Photoshop (Adobe) </li><ul><li>The Gimp </li></ul><li>etc... </li></ul></ul>II. History/OS
    433. 433. File System (http://en.wikipedia.org/wiki/File_system) <ul><li>Method for storing and organizing compuer files and the data they contain </li><ul><li>Easy to find, and access </li></ul><li>Usually use an underlying storage device </li><ul><li>Hard Drive
    434. 434. CD-ROM
    435. 435. USB Stick </li></ul><li>Not required </li><ul><li>Network connection
    436. 436. Any informations (/proc on Linux) </li></ul></ul>II. History/OS
    437. 437. File System Files & Directories <ul><li>A directory (folder) is a mapping between a file name and the actual file (data)
    438. 438. Directory structure can be: </li><ul><li>Flat: all files into one folder
    439. 439. Hierarchical: folder can contain files and folders </li></ul><li>Attributes </li><ul><li>Permissions (owner, groups, others in UNIX)
    440. 440. Creation, Modification date </li></ul><li>Extended Attributes </li><ul><li>Icons, Author, ... </li></ul></ul>II. History/OS
    441. 441. File System Files & Directories <ul><ul><li>In console mode, </li><ul><li>'.' means the current directory
    442. 442. '..' means the parent directory </li></ul><li>MS-DOS comes from CP/M which comes from UNIX hence the similarities </li><ul><li>Hierarchical File System
    443. 443. Shell and command (cp, mv, ...) </li></ul><li>Unfortunately Bill Gates also wanted to mark its differences </li><ul><li>Hence drive letters (A:, B:, C:, ...)
    444. 444. Hence the '' vs '/' as a path separator </li></ul><li>Problems nowadays when building applications for both world! </li></ul></ul>II. History/OS
    445. 445. File System Issue Example: External Fragmentation (http://en.wikipedia.org/wiki/Fragmentation_(computer)) Remove C,E After many operations (Create, Remove): Leads to performance problem: reading the red file requires 4 movements. Hard Drives are 1,000,000 times slower than CPU! II. History/OS A B C D F E A B D F Create: G = G 1 G 2 + A B G 1 D F G 2
    446. 446. File System Issue Example: External Fragmentation (http://en.wikipedia.org/wiki/Fragmentation_(computer)) <ul><li>Solutions: </li><ul><li>Windows (FAT, NTFS): defragment </li><ul><li>Run a software that reorganize files in a contiguous manner.
    447. 447. 30 % of available free space is recommanded for the defragmentation process (source: Microsoft) </li></ul><li>UNIX: keep external fragmentation below a given treshold (~5, 10 %) </li><ul><li>When file system operations are performed, it uses a smart algorithm.
    448. 448. Works very well when the free space available is above 20% </li></ul></ul></ul>II. History/OS
    449. 449. Other OS Issues <ul><li>Process Scheduling </li><ul><li>Ensuring fairness, performance, throughput, interactivity, all at the same time!
    450. 450. Dealing with multi-CPU, multi-cores, multi-threads, ... </li></ul><li>Memory Management </li><ul><li>Preventing fragmentation
    451. 451. Efficiency (cache, ...) </li></ul><li>And also... </li><ul><li>Security, stability, reliability, usability, ... </li></ul></ul>II. History/OS
    452. 452. II. History http://en.wikipedia.org/wiki/Computer_networking
    453. 453. Networking Needs <ul><li>Now we have: </li><ul><li>Computer Hardware
    454. 454. Theory to describe algorithms
    455. 455. Languages to write algorithms
    456. 456. Operating Systems to manage resources to make the use of hardware user and programmer friendly </li></ul><li>Problem at the beginning: </li><ul><li>few computers were available;
    457. 457. Lots of researchers widespread </li></ul><li>How to share the access to costly computers? </li></ul>II. History/Network
    458. 458. Computer Networking Definition <ul><li>Scientific (research) and engineering discipline concerned with communication between computer systems.
    459. 459. Involve at least two devices </li><ul><li>Usually, at least one is a computer.
    460. 460. Devices can be separated by: </li><ul><li>a few meters (e.g. via Bluetooth)
    461. 461. or thousands of kilometers (e.g. via the Internet). </li></ul></ul><li>Computer networking is sometimes considered a sub-discipline of Telecommunication </li></ul>II. History/Network
    462. 462. Pre-ARPANet Era <ul><li>Before 1940, carrying instructions between calculation machines and early computers was done by human users.
    463. 463. 1940 George Stibitz used a teletype machine to send instructions from Dartmouth College in New Hampshire to his Complex Number Calculator in New York
    464. 464. 1960-1970 Kleinrock, Baran and Davies had independently conceptualized and developed network systems consisting of datagrams or packets that could be used in a packet switching network between computer systems. </li></ul>II. History/Network
    465. 465. ARPANet (http://en.wikipedia.org/wiki/ARPANET) <ul><li>Advanced Research Projects Agency Network </li><ul><li>United States Department of Defense </li></ul><li>1962, J.C.R. Licklider was hired by the ARPA and developed the &quot;Intergalactic Network&quot; working group </li><ul><li>His ideas contained almost everything that the Internet is today.
    466. 466. Special type of computers will take care of the packet switching on the behalf of end-users one (big mainframe at that time) </li></ul></ul>II. History/Network
    467. 467. ARPANet <ul><li>1969: connection using 50 kbit/s circuits. </li><ul><li>University of California at Los Angeles,
    468. 468. SRI (in Stanford),
    469. 469. University of California at Santa Barbara,
    470. 470. University of Utah </li></ul><li>Development centred around Request For Comment (RFC) still used today.
    471. 471. In the World, other technology </li><ul><li>X.25 in Europe, DataPac in Canada, FidoNet, ...
    472. 472. and others... </li></ul></ul>II. History/Network
    473. 473. ARPANet II. History/Network
    474. 474. Birth of Internet (http://en.wikipedia.org/wiki/History_of_the_Internet) <ul><li>Many different networks leads to problem in communication
    475. 475. Internet is the Esperanto of Communication between Computers </li><ul><ul><li>Reduce the role of network to the bare minimum
    476. 476. Joining any network together whatever their characteristics are </li></ul></ul><li>RFCs 791 (IP), 792 (ICMP) and 793 (TCP) defines the Internet </li><ul><ul><li>Published in 1982 (First draft in 1974) </li></ul></ul><li>1983: TCP/IP becomes the only approved protocol on ARPANET </li></ul>II. History/Network
    477. 477. Internet for Everyone? <ul><li>ARPA's business was funding R&D </li><ul><li>US Government Funded
    478. 478. Unrelated commercial use was strictly forbidden </li><ul><li>Connections to Military sites and Universities
    479. 479. Some companies either helped in research project or provided services (e.g.: HP)
    480. 480. They asked for connections and they had!
    481. 481. Difficulties to define “commercial use” </li></ul></ul><li>1983, the U.S. military portion of the ARPANET was broken off as a separate network: MILNET
    482. 482. 1989: first dial-up ISP (world.std.com) </li><ul><li>Controversy in Universities! </li></ul></ul>II. History/Network
    483. 483. The Growth of Internet The Exponential Growth started thanks to the WWW II. History/Network
    484. 484. The World Wide Web (http://en.wikipedia.org/wiki/History_of_the_World_Wide_Web) <ul><li>Until the 90's, finding and accessing documents available on the Internet was a real pain
    485. 485. 1991: Tim Berners-Lee from the CERN Labs developed a network-based implementation of the hypertext concept </li><ul><ul><li>“ The WorldWideWeb (WWW) project aims to allow links to be made to any information anywhere. [...] The WWW project was started to allow high energy physicists to share data, news, and documentation. We are very interested in spreading the web to other areas, and having gateway servers for other data. Collaborators welcome!” </li></ul></ul></ul>II. History/Network
    486. 486. Web Browsers War (http://en.wikipedia.org/wiki/Browser_wars) <ul><li>1992: Mosaic (Andreessen & Bina, UIUC Students) </li><ul><li>First Modern (Graphical) Web Browser available for the mass market (Windows, UNIX) for free
    487. 487. A Revolution! </li></ul><li>1994: Anderseen & Clark created Netscape </li><ul><li>Company & Browser name
    488. 488. 80% used in 1996 </li></ul><li>1995: Microsoft released IE v1.0 </li><ul><li>Part of Windows 95+ (quite late!) </li></ul><li>The war then started! </li></ul>II. History/Network
    489. 489. Web Browsers War (http://en.wikipedia.org/wiki/Browser_wars) II. History/Network
    490. 490. Netscape vs Microsoft (http://en.wikipedia.org/wiki/Browser_wars) <ul><li>Adding features took precedence over bug fixing! </li><ul><li>Derivation from standards </li><ul><li>“Best Viewed with XX” Campaign! </li></ul></ul><li>Unfair: Microsoft released their browser packaged with their OS </li><ul><ul><li>IE is not the first source of income for Microsoft, it is for Netscape
    491. 491. Even if until IE v4.0, Netscape was by far superior, Microsoft was enlarging its market share automatically after each OS installation! </li></ul></ul></ul>II. History/Network
    492. 492. Netscape vs Microsoft (http://en.wikipedia.org/wiki/Browser_wars) <ul><li>Netscape business model was to sell server software
    493. 493. Microsoft decided to provide for “free” IIS (Web Server) with server version of Windows
    494. 494. Microsoft created licensing agreements: </li><ul><li>With computer manufacturers requiring them to provide desktop icons for IE
    495. 495. With AOL to base AOL's primary interface on IE rather than Netscape </li></ul><li>Microsoft imposed Apple to provide IE as the default browser on the Mac for five years </li></ul>II. History/Network
    496. 496. First Browser War Winner: Microsoft <ul><li>1998: End of Netscape </li><ul><li>Purchased by AOL afterwards. </li></ul><li>Lack of challengers == Lack of inventions </li><ul><li>2001: IE v6.0 (small improvement over IE v5.5)
    497. 497. 2006: IE v7.0 (reason: the success of Firefox) </li></ul><li>When Netscape died in 1998, its source code was released with an Open-Source licence </li><ul><li>This product was renamed Mozilla
    498. 498. 2002: Mozilla v1.0 rewritten from scratch </li><ul><li>Very popular in the Open-Source Community </li></ul><li>2003: AOL refused to support any longer Mozilla </li></ul></ul>II. History/Network
    499. 499. Second Browser War <ul><li>From Mozilla v1.0 many other products have been created </li><ul><li>2004: Firefox v1.0 is released by the Mozilla foundation (light-weight cross-platform version of Mozilla) </li></ul><li>June 2004, major security hole in IE </li><ul><li>Security companies and US-CERT recommend Firefox </li></ul><li>2005: IE usage share dropped down to 85% </li><ul><li>It was 95% in 2003. </li></ul><li>The war continue... </li></ul>II. History/Network
    500. 500. Searching on the Web (http://en.wikipedia.org/wiki/Search_engine) <ul><li>1993: Lycos
    501. 501. 1994: WebCrawler </li><ul><li>First full text www search engine </li></ul><li>1995: Yahoo & Altavista </li><ul><li>Leader since 2001 </li></ul><li>2001: Google </li><ul><li>Minimal interface
    502. 502. Smart “unbiased” algorithm (PageRank)
    503. 503. Revolution: results become ordered by their relevance! </li></ul><li>2004: MSN Search </li></ul>II. History/Network
    504. 504. Google vs Microsoft <ul><li>Linux may not be the Microsoft killer </li><ul><li>But may be a UNIX killer! ;-) </li></ul><li>Google is providing many web-enabled desktop services </li><ul><li>Search, Mail, Forums, Word, SpreadSheet, ... </li></ul><li>Concurrent to MS Office product
    505. 505. The OS does not really matter! </li><ul><li>Having a good web browser is important!
    506. 506. Google is founding the Mozilla Foundation that is developing Firefox (on both Windows and UNIX) </li></ul><li>To be followed... </li></ul>II. History/Network
    507. 507. Vocabulary <ul><li>Internet: the giant Wide Area Network (WAN) of networks that uses the TCP/IP protocol for communication
    508. 508. Intranet: a Local Area Network (LAN) that is using TCP/IP but that is not necessarily connected to the Internet </li><ul><li>e.g: GIKI Intranet </li></ul><li>Extranet: An Intranet that is extended outside of a company </li><ul><li>(usually over encryption on top of Internet) </li></ul><li>Ethernet: “hardware” link (TCP/IP is on top) </li></ul>II. History/Network
    509. 509. Internet “Killer Applications” <ul><li>Email was used before the Internet, it actually helps the development of Internet!
    510. 510. Newsgroup: discussion in forums
    511. 511. FTP: File Transfer Protocol
    512. 512. WWW: World Wide Web
    513. 513. Search Engines
    514. 514. P2P: User to User Data Exchange
    515. 515. Web 2.0 (everything runs on the server) </li><ul><li>Word Processor, Spreadsheet, Mail Reader, ...
    516. 516. Google is the leader (Microsoft Challenger?) </li></ul></ul>II. History/Network
    517. 517. Network OSI Model (http://en.wikipedia.org/wiki/OSI_model) <ul><li>A networking system is divided into layers.
    518. 518. Within each layer, one or more entities implement its functionality.
    519. 519. Each entity interacts directly only with the layer immediately beneath it, and provides facilities for use by the layer above it.
    520. 520. Protocols enable an entity in one host to interact with a corresponding entity at the same layer in a remote host. </li></ul>II. History/Network
    521. 521. Network OSI Model <ul><li>X.25 follows the OSI Model
    522. 522. Internet (TCP/IP) does not!! </li></ul>II. History/Network
    523. 523. OSI & TCP/IP II. History/Network
    524. 524. Layers at work Abstraction: Communication from process to process Implementation: Communication from layer to layer II. History/Network
    525. 525. Layers at work Example: UDP Application Layer Transport Layer Network Layer Link Layer II. History/Network UDP Data UDP Header IP Data IP Header Frame Header Frame Trailer Frame Data
    526. 526. Internet Topology (2003-11-23) II. History/Network
    527. 527. Network Topology (http://en.wikipedia.org/wiki/Network_topology) II. History/Network
    528. 528. Trends <ul><li>Asymmetric DSL: download >> upload
    529. 529. Wireless </li><ul><ul><li>Wi-Fi, Blutooth, ...
    530. 530. IP implementation?
    531. 531. Mobility, Topology, ... </li></ul></ul><li>Multimedia </li><ul><li>VoIP -- Voice Over IP (Skype) </li></ul><li>Peer to Peer </li><ul><li>Performance </li></ul><li>Link Layer for Wan (ATM, ...) </li></ul>II. History/Network
    532. 532. IPv6, the future <ul><li>IPv6 (Xerox) adopted by IETF in 1994 </li><ul><li>IPv4 address: 32 bits (4.3 billions),
    533. 533. IPv6 address: 128 bits (5×10 28 for each 6.5 billion people)
    534. 534. Many features (e.g: autoconfiguration, security) </li></ul><li>Support on Linux started in 1996! </li><ul><li>2001 fully supported </li></ul><li>Windows Vista will support it by default...
    535. 535. Adopted by China and India </li><ul><li>Facing problems with their population
    536. 536. Taking the leadership?! </li></ul></ul>II. History/Network
    537. 537. III. Conclusion
    538. 538. History of Computer Sciences <ul><li>Everything started with counting
    539. 539. Hardware has been designed to help
    540. 540. Theory were needed to understand hardware
    541. 541. Languages were required to ease the commanding of hardware
    542. 542. Operating Systems were designed to manage hardware and to make it appears a single unit
    543. 543. Networking was set up to share the access to costly hardware. </li></ul>III. Conclusion
    544. 544. Other CS Fields include <ul><li>Software Engineering </li><ul><li>Project Management, ... </li></ul><li>Artificial Intelligence </li><ul><li>Neural Network, ... </li></ul><li>Multimedia </li><ul><li>Image Processing, ... </li></ul><li>Simulation & Modelling
    545. 545. Distributed Systems </li><ul><li>Web Services, ... </li></ul><li>Parallel Programming </li><ul><li>Cluster, Grid Computing, ... </li></ul></ul>III. Conclusion
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.