Introduction to Computing_ Explorations in Language, Logic, and Machines.pdf

This preview shows page 1 - 6 out of 266 pages.

Introduction toComputingExplorations inLanguage, Logic, and MachinesDavid EvansUniversity of Virginia
For the latest version of this book and supplementary materials, visit:Version: August 19, 2011Attribution-Noncommercial-Share Alike 3.0 United States License
Contents1Computing11.1Processes, Procedures, and Computers. . . . . . . . . . . . . . . .21.2Measuring Computing Power. . . . . . . . . . . . . . . . . . . . .31.2.1Information. . . . . . . . . . . . . . . . . . . . . . . . . . .31.2.2Representing Data. . . . . . . . . . . . . . . . . . . . . . .81.2.3Growth of Computing Power. . . . . . . . . . . . . . . . .121.3Science, Engineering, and the Liberal Arts. . . . . . . . . . . . . .131.4Summary and Roadmap. . . . . . . . . . . . . . . . . . . . . . . .16Part I: Defining Procedures2Language192.1Surface Forms and Meanings. . . . . . . . . . . . . . . . . . . . .192.2Language Construction. . . . . . . . . . . . . . . . . . . . . . . . .202.3Recursive Transition Networks. . . . . . . . . . . . . . . . . . . . .222.4Replacement Grammars. . . . . . . . . . . . . . . . . . . . . . . .262.5Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323Programming353.1Problems with Natural Languages. . . . . . . . . . . . . . . . . . .363.2Programming Languages. . . . . . . . . . . . . . . . . . . . . . . .373.3Scheme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .393.4Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .403.4.1Primitives. . . . . . . . . . . . . . . . . . . . . . . . . . . .403.4.2Application Expressions. . . . . . . . . . . . . . . . . . . .413.5Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .443.6Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .453.6.1Making Procedures. . . . . . . . . . . . . . . . . . . . . . .453.6.2Substitution Model of Evaluation. . . . . . . . . . . . . . .463.7Decisions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483.8Evaluation Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . .503.9Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .524Problems and Procedures534.1Solving Problems. . . . . . . . . . . . . . . . . . . . . . . . . . . .534.2Composing Procedures. . . . . . . . . . . . . . . . . . . . . . . . .544.2.1Procedures as Inputs and Outputs. . . . . . . . . . . . . .554.3Recursive Problem Solving. . . . . . . . . . . . . . . . . . . . . . .564.4Evaluating Recursive Applications. . . . . . . . . . . . . . . . . . .644.5Developing Complex Programs. . . . . . . . . . . . . . . . . . . .674.5.1Printing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
4.5.2Tracing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .694.6Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .735Data755.1Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .755.2Pairs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .775.2.1Making Pairs. . . . . . . . . . . . . . . . . . . . . . . . . . .795.2.2Triples to Octuples. . . . . . . . . . . . . . . . . . . . . . .805.3Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .815.4List Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . .835.4.1Procedures that Examine Lists. . . . . . . . . . . . . . . . .835.4.2Generic Accumulators. . . . . . . . . . . . . . . . . . . . .845.4.3Procedures that Construct Lists. . . . . . . . . . . . . . . .865.5Lists of Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .905.6Data Abstraction. . . . . . . . . . . . . . . . . . . . . . . . . . . . .925.7Summary of Part I. . . . . . . . . . . . . . . . . . . . . . . . . . . .102Part II: Analyzing Procedures6Machines1056.1History of Computing Machines. . . . . . . . . . . . . . . . . . . .1066.2Mechanizing Logic. . . . . . . . . . . . . . . . . . . . . . . . . . .1086.2.1Implementing Logic. . . . . . . . . . . . . . . . . . . . . .1096.2.2Composing Operations. . . . . . . . . . . . . . . . . . . . .1116.2.3Arithmetic. . . . . . . . . . . . . . . . . . . . . . . . . . . .1146.3Modeling Computing. . . . . . . . . . . . . . . . . . . . . . . . . .1166.3.1Turing Machines. . . . . . . . . . . . . . . . . . . . . . . .1186.4Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1237Cost1257.1Empirical Measurements. . . . . . . . . . . . . . . . . . . . . . . .1257.2Orders of Growth. . . . . . . . . . . . . . . . . . . . . . . . . . . .1297.2.1BigO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1307.2.2Omega. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1337.2.3Theta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1347.3Analyzing Procedures. . . . . . . . . . . . . . . . . . . . . . . . . .1367.3.1Input Size. . . . . . . . . . . . . . . . . . . . . . . . . . . .1367.3.2Running Time. . . . . . . . . . . . . . . . . . . . . . . . . .1377.3.3Worst Case Input. . . . . . . . . . . . . . . . . . . . . . . .1387.4Growth Rates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1397.4.1No Growth: Constant Time. . . . . . . . . . . . . . . . . .1397.4.2Linear Growth. . . . . . . . . . . . . . . . . . . . . . . . . .1407.4.3Quadratic Growth. . . . . . . . . . . . . . . . . . . . . . . .1457.4.4Exponential Growth. . . . . . . . . . . . . . . . . . . . . . .1477.4.5Faster than Exponential Growth. . . . . . . . . . . . . . . .1497.4.6Non-terminating Procedures. . . . . . . . . . . . . . . . .1497.5Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1498Sorting and Searching1538.1Sorting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1538.1.1Best-First Sort. . . . . . . . . . . . . . . . . . . . . . . . . .1538.1.2Insertion Sort. . . . . . . . . . . . . . . . . . . . . . . . . .157
8.1.3Quicker Sorting. . . . . . . . . . . . . . . . . . . . . . . . .1588.1.4Binary Trees. . . . . . . . . . . . . . . . . . . . . . . . . . .1618.1.5Quicksort. . . . . . . . . . . . . . . . . . . . . . . . . . . . .1668.2Searching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1678.2.1Unstructured Search. . . . . . . . . . . . . . . . . . . . . .1688.2.2Binary Search. . . . . . . . . . . . . . . . . . . . . . . . . .1688.2.3Indexed Search. . . . . . . . . . . . . . . . . . . . . . . . .1698.3Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178Part III: Improving Expressiveness9Mutation1799.1Assignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1799.2Impact of Mutation. . . . . . . . . . . . . . . . . . . . . . . . . . .1819.2.1Names, Places, Frames, and Environments. . . . . . . . .1829.2.2Evaluation Rules with State. . . . . . . . . . . . . . . . . .1839.3Mutable Pairs and Lists. . . . . . . . . . . . . . . . . . . . . . . . .1869.4Imperative Programming. . . . . . . . . . . . . . . . . . . . . . . .1889.4.1List Mutators. . . . . . . . . . . . . . . . . . . . . . . . . . .1889.4.2Imperative Control Structures. . . . . . . . . . . . . . . . .1919.5Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19310 Objects19510.1 Packaging Procedures and State. . . . . . . . . . . . . . . . . . . .19610.1.1 Encapsulation. . . . . . . . . . . . . . . . . . . . . . . . . .19610.1.2 Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . .19710.1.3 Object Terminology. . . . . . . . . . . . . . . . . . . . . . .19910.2 Inheritance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20010.2.1 Implementing Subclasses. . . . . . . . . . . . . . . . . . .20210.2.2 Overriding Methods. . . . . . . . . . . . . . . . . . . . . .20410.3 Object-Oriented Programming. . . . . . . . . . . . . . . . . . . .20710.4 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20911 Interpreters21111.1 Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21211.1.1 Python Programs. . . . . . . . . . . . . . . . . . . . . . . .21311.1.2 Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . .21611.1.3 Applications and Invocations. . . . . . . . . . . . . . . . .21911.1.4 Control Statements. . . . . . . . . . . . . . . . . . . . . . .21911.2 Parser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22111.3 Evaluator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22311.3.1 Primitives

Upload your study docs or become a

Course Hero member to access this document

Upload your study docs or become a

Course Hero member to access this document

End of preview. Want to read all 266 pages?

Upload your study docs or become a

Course Hero member to access this document

Term
Spring
Professor
N/A
Tags
Computer Science, Book, Computer, Binary numeral system, Measuring Computing Power, Sicience, binary questions

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture