
Introduction to Computer Science S. Arun-Kumar [email protected] Department of Computer Science and Engineering I. I. T. Delhi, Hauz Khas, New Delhi 110 016. October 12, 2013 © S. Arun-Kumar HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 1 OF 887 QUIT Contents 1 Computing 3 1.1 Introduction to Computing................................................................................ 3 1.2 Long Multiplication.................................................................................... 26 1.2.1 The algorithm................................................................................... 27 1.2.2 Correctness.................................................................................... 29 1.2.3 The Effort of Long Multiplication........................................................................ 30 1.2.4 Comparison.................................................................................... 31 1.3 Our Computing Tool................................................................................... 35 1.4 Some Simple Algorithmic Definitions.......................................................................... 64 1.5 Substitution of functions................................................................................. 69 1.6 Functions as inductively defined computational processes.............................................................. 79 1.7 Algorithmic Definitions which are well-founded.................................................................... 79 1.8 Recursive processes................................................................................... 84 1.9 Correctness........................................................................................ 86 1.10 Complexity........................................................................................ 88 1.11 Efficiency, Why and How?................................................................................ 89 1.12 Asymptotic analysis and Orders of growth....................................................................... 91 1.13 The Analysis of Algorithms: The Big “O” notation................................................................... 93 2 More examples of recursive algorithms 113 3 introduction to SML 132 3.1 Primitives: Integer & Real................................................................................ 134 HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 2 OF 887 QUIT 3.2 Primitives: Booleans................................................................................... 182 3.3 The Conditional...................................................................................... 185 3.4 The Binary Boolean Operators............................................................................. 200 3.5 Nontermination and Boolean Operators........................................................................ 204 3.6 Example: Fibonacci................................................................................... 214 3.7 Fibonacci Numbers and the Golden Ratio....................................................................... 239 4 Algorithms: Design & Refinement 241 4.1 Technical Completeness & Algorithms......................................................................... 241 4.2 Algorithm Refinement.................................................................................. 276 4.3 Variations: Algorithms & Code............................................................................. 309 4.4 Names, Scopes & Recursion.............................................................................. 340 5 Fermat’s Factorization Method 376 6 Introducing Reals 387 6.1 Floating Point....................................................................................... 387 6.2 Root Finding, Composition and Recursion....................................................................... 412 7 Correctness, Termination & Complexity 446 7.1 Termination and Space Complexity........................................................................... 446 7.2 Efficiency Measures and Speed-ups.......................................................................... 486 7.3 Invariance & Correctness................................................................................ 517 8 Compound Data 543 8.1 Tuples & Lists....................................................................................... 543 HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 3 OF 887 QUIT 8.2 Polynomial Evaluation.................................................................................. 556 8.3 Generating Primes.................................................................................... 569 8.4 Compound Data & Lists................................................................................. 585 8.5 Compound Data & List Algorithms........................................................................... 616 9 Higher Order Functions & Structured Data 646 9.1 Higher Order Functions................................................................................. 646 9.2 Structured Data...................................................................................... 673 9.3 Generalized Sorting Algorithms............................................................................. 686 9.4 User Defined Structured Data Types.......................................................................... 715 10 Imperative Programming: An Introduction 737 10.1 Introducing a Memory Model.............................................................................. 737 10.2 Imperative Programming:................................................................................ 766 10.3 Arrays........................................................................................... 793 11 A large Example: Tautology Checking 807 11.1 Large Example: Tautology Checking.......................................................................... 807 11.2 Tautology Checking Contd................................................................................ 832 12 Lecture-wise Index to Slides 863 HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 4 OF 887 QUIT Colour Coding of text • Black is normal foreground colour. • Brown is the colour of slide headings. • Various colours like brown, red and blue are used to provide emphasis or to stand out from the usual text. • The special colour magenta is used to denote a hyperlink. These hy- perlinks are “mouse-clickable” and they take you to a different slide often out of order. You may use the GO BACK button to return in the reverse order of the traversal of hyperlinks. • Blue type-writer font is used for SML keywords, system re- sponses while running programs etc. HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 5 OF 887 QUIT 1. Computing 1.1. Introduction to Computing 1. Introduction 2. Computing tools 3. Ruler and Compass 4. Computing and Computers 5. Primitives 6. Algorithm 7. Problem: Doubling a Square 8. Solution: Doubling a Square 9. Execution: Step 1 10. Execution: Step 2 11. Doubling a Square: Justified 12. Refinement: Square Construction 13. Refinement 2: Perpendicular at a point 14. Solution: Perpendicular at a point 15. Perpendicular at a point: Justification Next: Our Computing Tool HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 6 OF 887 QUIT Introduction • This course is about computing • Computing as a process is nearly as fundamental as arithmetic • Computing as a mental process • Computing may be done with a variety of tools which may or may not assist the mind HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 7 OF 887 QUIT Computing tools • Sticks and stones (counting) • Paper and pencil (an aid to mental computing) • Abacus (still used in Japan!) • Slide rules (ask a retired engineer!) • Straight-edge and compass HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 8 OF 887 QUIT Straight-edge and Compass Actually it is a computing tool. • Construct a length that is half of a given length • Bisect an angle • Construct a square that is twice the area of a given square p • Construct 10 HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 9 OF 887 QUIT Straight-edge and Compass: Primitives A more exact description of ruler and compass primitives Straight-edge: Can specify lines, rays and line segments. Cannot really specify lengths since the ruler is only supposed to be an unmarked straight-edge. Compass: 1. Can define arcs and circles, 2. Can specify only comparative non-zero lengths and not absolute lengths. Straight-edge and Compass: Can specify points of intersection. Note that an unmarked straight-edge cannot be used to compare lengths. HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 10 OF 887 QUIT Problem: Doubling a Square Consider an example from “Straight-edge and Compass Constructions”. Given a square, construct another square of twice the area of the original square. A D B C Note. • Whatever lengths we assume in the solution have to be taken only as symbolic and not absolute since with an unmarked straight-edge and compass only relative comparisons are possible – no absolute lengths are possible. • The (symbolic) lengths we assume are necessary only in the justifica- tion of correctness of the construction. HOME PAGE CONTENTS JJ J I II GO BACK FULL SCREEN CLOSE 11 OF 887 QUIT Solution & Justification: Doubling a Square Assume given a square ABCD of side a > 0. p 1. Draw the diagonal AC. AC = 2a 2 2. Complete the square ACEF on side AC. Area of ACEF = 2a . Note. • Even though this is a
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages890 Page
-
File Size-