Lecture Notes (6Up)

Lecture Notes (6Up)

CS2110 Spring 2014. Concluding Lecture: CS2110 Spring 2014. Concluding Lecture: History, Correctness Issues, Summary History, Correctness Issues, Summary Programming and computers: Final review session: Fri, 9 May. 1:00–3:00. Phillips 101. Momentous changes since the 1940s –or since even the use Final: 7:00–9:30PM, Monday, 12 May, Barton Hall of punch cards and attempt at automation … We hope to get you tentative course grades by Wednesday noon, but it may be later. You then visit the CMS and do the assignment to tell us whether you accept the grade or will take the final. There will be a message on the Piazza and the CMS about this when the tentative course grades are available. 1 2 Punch cards Charles Babbage designed a “difference engine” in 1822! Jacquard loom Compute mathematical tables for log, sin, cos, other trigonometric functions. Loom still used in China No electricity Mechanical loom invented by Joseph Marie Jacquard in 1801. Used the holes punched in pasteboard punch cards to control the weaving of patterns in fabric. Punch card corresponds to one row of the design. The mathematicians doing the calculations were called Based on earlier invention by French mechanic Falcon in 1728. computers 3 4 Oxford English Dictionary, 1971! Charles Babbage planned to use cards to store programs in his Analytical engine. (First designs of real computers, Computer: one who computes; a calculator, rekoner. spec. a middle 1800s until his death in 1871.)! person employed to make calculations in an observatory, in surveying. etc. First programmer was Ada Lovelace, daughter of poet 1664: Sir T. Browne. The calendars of these computers. Lord Byron.! 1704. T. Swift. A very skillful computer. ! Privately schooled in math.! 1744. Walpole. Told by some nice computers of national One tutor was Augustus De glory. Morgan.! 1855. Brewster Newton. To pay the expenses of a computer ! for reducing his observations. The Right Honourable Augusta Ada, Countess of The mathematicians doing the Lovelace.! calculations were called computers 5 6 1 Herman Hollerith. His tabulating machines used in compiling the Computers, calculating the US census 1890 Census. Hollerith's patents were acquired by the Computing-Tabulating-Recording Co. Later became IBM. The operator places each card in the reader, pulls down a lever, and removes the card after each punched hole is counted. Hollerith 1890 Census Tabulator 7 8 1935-38. Konrad Zuse - Z1 Computer History of computers How did Gries get into Computer Science? 1935-39. John Atanasoff and Berry (grad student). Iowa State 1959. Took his only computer course. Senior, Queens College. 1944. Howard Aiken & Grace Hopper Harvard Mark I 1960. Mathematician-programmer at the US Naval Weapons Lab Computer in Dahlgren, Virginia. 1946. John Presper Eckert & John W. Mauchly ENIAC 1 Computer 20,000 vacuum tubes later ... 1947-48 The Transistor, at Bell-labs. 1953. IBM. the IBM 701. 9 10 1960: Big Year for Programming Languages 1960. Mathematician-programmer at the US Naval Weapons Lab LISP (List Processor): McCarthy, MIT (moved to Stanford). First in Dahlgren, Virginia. functional programming language. No assignment statement. Write everything as recursive functions. Programmed in Fortran and IBM 7090 assembly language COBOL (Common Business-Oriented Language). Became most if (SEX == ‘M’) MALES= MALES + 1; " widely used language for business, data processing. else FEMALES= FEMALES + 1; ALGOL (Algorithmic Language). Developed by an international CLI SEX,'M' Male? BNO IS_FEM If not, branch around team over a 3-year period. McCarthy was on it, John Backus was L 7,MALES Load MALES into register 7; on it (developed Fortran in mid 1950’s). Gries’s soon-to-be PhD LA 7,1(,7) add 1; supervisor, Fritz Bauer of Munich, led the team. ST 7,MALES and store the result B GO_ON Finished with this portion IS_FEM L 7,FEMALES If not male, load FEMALES into register 7; LA 7,1(,7) add 1; ST 7,FEMALES and store GO_ON EQU * 11 12 2 1959. Took his only computer course. Senior, Queens College. Late 1960s Write programs on IBM “punch 1960. Mathematician-programmer at the US Naval Weapons Lab in cards. Deck of cards making up Dahlgren, Virginia. a program trucked to Langmuir labs by the airport 2-3 times a 1962. Back to grad school, in Math, at University of Illinois day; get them back, with output, Graduate Assistantship: Help two Germans write the ALCOR- IBM 360 3-4 hours later Illinois 7090 Compiler. Mainframes John Backus, FORTRAN, mid 1950’s: 30 people years This compiler: 6 ~people-years Today, CS compiler writing course: 2 students, one semester 1963-66 Dr. rer. nat. in Math in Munich Institute of Technology 1966-69 Asst. Professor, Stanford CS 1969- Cornell! 13 14 About 1973. BIG STEP FORWARD About 1973. BIG 1983-84 Late 1980s STEP FORWARD 1. Write program on punch cards. Switched to Put fifth floor addition on Upson. Switched to using" Macintosh in labs We made the case that our labs 2. Wait in line (20 min) to put cards in the programming were in our office and therefore card reader in Upson basement language Pascal, we need bigger offices. 3. Output comes back in 5 minutes developed by Niklaus 1980s Wirth at Stanford. CS began getting About 1979. Teraks 40 lbs computers on their Nowadays November 1981, desks. Everybody has a computer in their Prof. Tim Teitelbaum" Terak with 56K" office. sees opportunity. He" RAM, one floppy" and grad student Tom" drive: $8,935. “ Reps develop Cornell Program 2014 ” Synthesizer . Year later, Want 10MB hard drive? Moved into Gates Hall! Cornell uses Teraks in its prog $8,000 more course. 15 16 The NATO Software Engineering Conferences Programming languages. Dates approximate homepages.cs.ncl.ac.uk/brian.randell/NATO/ Year Major languages Teach at Cornell 1956’s Fortran 7-11 Oct 1968, Garmisch, Germany 27-31 Oct 1969, Rome, Italy 1960 Algol, LISP, COBOL 1965 PL/I PL/C (1969) Download Proceedings, which have transcripts of discussions. 1970 C See photographs. 1972 Pascal Software crisis: 1980’s Smalltalk (object-oriented) Pascal (1980’s) Academic and industrial people. Admitted for first time that they did ’ 1980 s (late) C++ not know how to develop software 1996 Java C and C++ efficiently and effectively. 1998 Java / Matlab 17 3 Software Engineering, 1968 Next 10-15 years: intense period of research on software engineering, language design, proving programs correct, etc. 19 Software Engineering, 1968 20 During 1970s, 1980s, intense research on" How to prove programs correct," The way we understand Throughout, we try to give How to make it practical, " recursive methods is based on you thought habits to help Throughout, we try to give Methodology for developing" that methodology. you solve programming you thought habits and algorithms Our understanding of and problems for effectively strategies to help you solve development of loops is based The way we understand programming problems for on that methodology. Don’t solve a problem recursive methods is based on effectively, e.g. until you know what the that methodology. Write good method specs. Simplicity is key: problem is (give precise Our understanding of and Keep methods short. Learn not only to simplify, and thorough specs). development of loops is based Use method calls to eliminate learn not to complify. on that methodology. nested loops. Learn to read a program at different levels of Put local variable declarations Separate concerns, and abstraction. near first use. focus on one at a time. Use methods and method Mark Twain: Nothing needs changing Develop and test calls so that you don’t so much as the habits of others. incrementally. have nested loops 21 22 Simplicity and beauty: keys to success Correctness of programs, the " CS has its field of CS professor's non-dilemma teaching of programming computational complexity. I do so want students to see simplicity Mine is computational beauty and simplicity. elegance simplicity, A language used just has to be one only with that property. perfection David Gries Therefore, and most reasonably, intellectual honesty Edsger W. Dijkstra Sir Tony Hoare I will not and do not teach C. Edsger W. Dijkstra Sir Tony Hoare Inside every large program is a David Gries little program just trying to Dijkstra: The competent programmer is fully aware of the come out. Tony Hoare limited size of his own skull, so he approaches the Admonition programming task in full humility, and among other things, he a little Grook avoids clever tricks like the plague. Beauty is our Business. In correctness concerns Edsger Dijkstra one must be immersed. Hoare: Two ways to write a program: To use only testing (1) Make it so simple that there are obviously no errors. is simply accursed. 23 (2) Make it so complicated that there are no obvious errors. 24 4 Axiomatic Basis for Computer Programming." Assignment statement x= e; Tony Hoare, 1969 Provide a definition of programming language statements {true} {x+1 >= 0} {2*x = 82} not in terms of how they are executed but in terms of x= 5; x= x + 1; x= 2*x; proving them correct. {x = 5} {x >= 0} {x = 82} Definition of notation: {precondition P} P[x:= e] (read P with x replaced by e) stands for a copy of Statement S expression P in which each occurrence of x is replaced by e {Postcondition Q) Example: (x >= 0)[x:= x+1] = x+1 >= 0 Meaning: If P is true, then execution of S is guaranteed to terminate and with Q true Definition of the assignment statement: {P[x:= e]} x= e; {P} 25 26 Assignment statement x= e; If statement defined as an “inference rule”: Definition of the assignment statement: Definition of if statement: If {P[x:= e]} {P && B} ST {Q} and x= e; {P && !B} SF {Q} {P} Then {x+1 >= 0} {2*x = 82} {P} x= x + 1; x= 2*x; if (B) ST {x >= 0} {x = 82} else SF {Q} x = x/6 { 2.0xy + z = (2.0xy + z)/6 } The then-part, ST, must end with Q true x= 2.0*x*y + z; The else-part, SF, must end with Q true {x = x/6} 2.0xy + z = (2.0xy + z)/6 27 28 Hoare’s contribution 1969:" Axiomatic basis: Definition of a language in terms of how to How to prove concurrent programs correct." prove a program correct." Use the principle of non-interference But it is difficult to prove a program correct after the fact.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us