Concrete Abstractions

Total Page:16

File Type:pdf, Size:1020Kb

Concrete Abstractions Out of print; available for free at http://www.gustavus.edu/+max/concrete-abstractions.html Concrete Abstractions Copyright © 1999 by Max Hailperin, Barbara Kaiser, and Karl Knight Out of print; available for free at http://www.gustavus.edu/+max/concrete-abstractions.html Copyright © 1999 by Max Hailperin, Barbara Kaiser, and Karl Knight Out of print; available for free at http://www.gustavus.edu/+max/concrete-abstractions.html Concrete Abstractions An Introduction to Computer Science Using Scheme Max Hailperin Gustavus Adolphus College Barbara Kaiser Gustavus Adolphus College Karl Knight Gustavus Adolphus College An Imprint of Brooks/Cole Publishing Company ® An International Thomson Publishing Company Paci®c Grove ² Albany ² Belmont ² Bonn ² Boston ² Cincinnati ² Detroit Johannesburg ² London ² Madrid ² Melbourne ² Mexico City ² New York Paris ² Singapore ² Tokyo ² Toronto ² Washington Copyright © 1999 by Max Hailperin, Barbara Kaiser, and Karl Knight Out of print; available for free at http://www.gustavus.edu/+max/concrete-abstractions.html Sponsoring Editor: Suzanne Jeans Cover Design: Vernon T. Boes Marketing Team: Nathan Wilbur, Michele Mootz Cover Photo: Craig Cowan. Courtesy of Couturier Gallery, Editorial Assistant: Kathryn Schooling Los Angeles, CA Production Manager: Marlene Thom Project Management and Typesetting: Manuscript Editor: Linda Thompson Integre Technical Publishing Co., Inc. Interior Design: Merry Obrecht Sawdey Printing and Binding: Webcom, Ltd. COPYRIGHT 1999 by Brooks/Cole Publishing Company A division of International Thomson Publishing Inc. The ITP logo is a registered trademark used herein under license. JavaTM is a trademark of Sun Microsystems, Inc. All other products used herein are used for identi®cation purposes only, and may be trademarks or registered trademarks of their respective owners. For more information, contact: BROOKS/COLE PUBLISHING COMPANY International Thomson Editores 511 Forest Lodge Road Seneca 53 Paci®c Grove, CA 93950 Col. Polanco USA 11560 Mexico, D.F., Mexico International Thomson Publishing Europe International Thomson Publishing GmbH Berkshire House 168±173 KonigswintererÈ Strasse 418 High Holborn 53227 Bonn London WC1V 7AA Germany England International Thomson Publishing Asia Thomas Nelson Australia 221 Henderson Road 102 Dodds Street #05±10 Henderson Building South Melbourne, 3205 Singapore 0315 Victoria, Australia International Thomson Publishing Japan Nelson Canada Hirakawacho Kyowa Building, 3F 1120 Birchmount Road 2-2-1 Hirakawacho Scarborough, Ontario Chiyoda-ku, Tokyo 102 Canada M1K 5G4 Japan All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transcribed, in any form or by any meansÐ electronic, mechanical, photocopying, recording, or otherwiseÐwithout the prior written permission of the publisher, Brooks/Cole Publishing Company, Paci®c Grove, California 93950. Printed in Canada 10987654321 Library of Congress Cataloging in Publication Data Hailperin, Max. Concrete abstractions : an introduction to computer science using Scheme / Max Hailperin, Barbara Kaiser, Karl Knight. p. cm. ISBN 0-534-95211-9 (alk. paper) IS PR 1. Computer science. 2. Abstract data types (Computer science) OK IN O TE B D S I. Kaiser, Barbara (Barbara K.). II. Knight, Karl (Karl I O H N W.). III. Title. T A C R QA76.H296 1997 E I D 0 P -F A 005.13 3Ðdc21 98-34080 R P E E ED CIP RECYCL Copyright © 1999 by Max Hailperin, Barbara Kaiser, and Karl Knight Out of print; available for free at http://www.gustavus.edu/+max/concrete-abstractions.html Contents Preface ix PART I Procedural Abstraction CHAPTER 1 Computer Science and Programming 3 1.1 What's It All About? / 3 Sidebar: Responsible Computer Use / 5 1.2 Programming in Scheme / 5 1.3 An Application: Quilting / 15 CHAPTER 2 Recursion and Induction 22 2.1 Recursion / 22 Sidebar: Exponents / 28 2.2 Induction / 28 2.3 Further Examples / 34 2.4 An Application: Custom-Sized Quilts / 40 CHAPTER 3 Iteration and Invariants 48 3.1 Iteration / 48 3.2 Using Invariants / 54 3.3 Perfect Numbers, Internal De®nitions, and Let / 58 3.4 Iterative Improvement: Approximating the Golden Ratio / 61 3.5 An Application: The Josephus Problem / 65 Copyright © 1999 by Max Hailperin, Barbara Kaiser, and Karl Knight v vi Contents CHAPTER 4 Orders of Growth and Tree Recursion 75 4.1 Orders of Growth / 75 Sidebar: Selection Sort / 77 Sidebar: Merge Sort / 78 Sidebar: Merging / 79 Sidebar: Logarithms / 82 4.2 Tree Recursion and Digital Signatures / 83 Sidebar: Modular Arithmetic / 87 4.3 An Application: Fractal Curves / 95 CHAPTER 5 Higher-Order Procedures 109 5.1 Procedural Parameters / 109 5.2 Uncomputability / 113 Sidebar: Alan Turing / 116 5.3 Procedures That Make Procedures / 118 5.4 An Application: Verifying ID Numbers / 120 PART II Data Abstraction CHAPTER 6 Compound Data and Data Abstraction 133 6.1 Introduction / 133 6.2 Nim / 135 6.3 Representations and Implementations / 143 Sidebar: Nim Program / 144 Sidebar: Game State ADT Implementation / 152 6.4 Three-Pile Nim / 153 6.5 An Application: Adding Strategies to Nim / 156 Sidebar: Type Checking / 157 CHAPTER 7 Lists 167 7.1 The De®nition of a List / 167 7.2 Constructing Lists / 169 7.3 Basic List Processing Techniques / 172 7.4 List Processing and Iteration / 179 7.5 Tree Recursion and Lists / 182 Contents vii 7.6 An Application: A Movie Query System / 187 Sidebar: Is There More to Intelligence Than the Appearance of Intelligence? / 202 CHAPTER 8 Trees 212 8.1 Binary Search Trees / 212 8.2 Ef®ciency Issues with Binary Search Trees / 220 Sidebar: Privacy Issues / 225 8.3 Expression Trees / 226 8.4 An Application: Automated Phone Books / 229 CHAPTER 9 Generic Operations 243 9.1 Introduction / 243 9.2 Multiple Representations / 244 9.3 Exploiting Commonality / 253 9.4 An Application: Computer Graphics / 262 CHAPTER 10 Implementing Programming Languages 278 10.1 Introduction / 278 10.2 Syntax / 279 Sidebar: The Expressiveness of EBNF / 285 10.3 Micro-Scheme / 289 10.4 Global De®nitions: Mini-Scheme / 303 10.5 An Application: Adding Explanatory Output / 311 PART III Abstractions of State CHAPTER 11 Computers with Memory 333 11.1 Introduction / 333 11.2 An Example Computer Architecture / 333 11.3 Programming the SLIM / 340 Sidebar: What Can Be Stored in a Location? / 342 Sidebar: SLIM's Instruction Set / 348 11.4 Iteration in Assembly Language / 349 11.5 Recursion in Assembly Language / 357 11.6 Memory in Scheme: Vectors / 361 11.7 An Application: A Simulator for SLIM / 367 viii Contents CHAPTER 12 Dynamic Programming 379 12.1 Introduction / 379 12.2 Revisiting Tree Recursion / 380 12.3 Memoization / 388 12.4 Dynamic Programming / 398 12.5 Comparing Memoization and Dynamic Programming / 406 12.6 An Application: Formatting Paragraphs / 406 CHAPTER 13 Object-based Abstractions 420 13.1 Introduction / 420 13.2 Arithmetic Expressions Revisited / 421 13.3 RA-Stack Implementations and Representation Invariants / 432 Sidebar: Strings and Characters / 433 13.4 Queues / 446 13.5 Binary Search Trees Revisited / 453 13.6 Dictionaries / 472 CHAPTER 14 Object-oriented Programming 486 14.1 Introduction / 486 14.2 An Object-oriented Program / 487 14.3 Extensions and Variations / 511 14.4 Implementing an Object-oriented Prog. System / 517 14.5 An Application: Adventures in the Land of Gack / 543 CHAPTER 15 Java, Applets, and Concurrency 577 15.1 Introduction / 577 15.2 Java / 578 15.3 Event-Driven Graphical User Interfaces in Applets / 599 15.4 Concurrency / 616 Sidebar: Nested Calls to Synchronized Methods and Deadlock / 625 15.5 An Application: Simulating Compound Interest / 632 APPENDIX Nonstandard Extensions to Scheme 645 Bibliography 649 Index 653 Preface At ®rst glance, the title of this book is an oxymoron. After all, the term abstraction refers to an idea or general description, divorced from physical objects. On the other hand, something is concrete when it is a particular object, perhaps something that you can manipulate with your hands and look at with your eyes. Yet you often deal with concrete abstractions. Consider, for example, a word processor. When you use a word processor, you probably think that you have really entered a document into the computer and that the computer is a machine which physically manipulates the words in the document. But in actuality, when you ªenterº the document, there is nothing new inside the computerÐthere are just different patterns of activity of electrical charges bouncing back and forth. Moreover, when the word processor ªmanipulatesº the words in the document, those manipulations are really just more patterns of electrical activity. Even the program that you call a ªword processorº is an abstractionÐit's the way we humans choose to talk about what is, in reality, yet more electrical charges. Still, although these abstractions such as ªword processorsº and ªdocumentsº are merely convenient ways of describing patterns of electrical activity, they are also things that we can buy, sell, copy, and use. As you read through this book, we will introduce several abstract ideas in as concrete a way as possible. As you become familiar and comfortable with these ideas, you will begin to think of the abstractions as actual concrete objects. Having already gone through this process ourselves, we've chosen to call computer science ªthe discipline of concrete abstractionsº; if that seems too peculiar to fathom, we invite you to read the book and then reconsider the notion. This book is divided into three parts, dealing with procedural abstractions, data abstractions, and abstractions of state. A procedure is a way of abstracting what's called a computational process. Roughly speaking, a process is a dynamic succession of eventsÐa happening. When your computer is busy doing something, a process ix x Preface is going on inside it. When we call a process a computational process, we mean that we are ignoring the physical nature of the process and instead focusing on the information content. For example, consider the problem of conveying some information to a bunch of other people.
Recommended publications
  • Tarjan Transcript Final with Timestamps
    A.M. Turing Award Oral History Interview with Robert (Bob) Endre Tarjan by Roy Levin San Mateo, California July 12, 2017 Levin: My name is Roy Levin. Today is July 12th, 2017, and I’m in San Mateo, California at the home of Robert Tarjan, where I’ll be interviewing him for the ACM Turing Award Winners project. Good afternoon, Bob, and thanks for spending the time to talk to me today. Tarjan: You’re welcome. Levin: I’d like to start by talking about your early technical interests and where they came from. When do you first recall being interested in what we might call technical things? Tarjan: Well, the first thing I would say in that direction is my mom took me to the public library in Pomona, where I grew up, which opened up a huge world to me. I started reading science fiction books and stories. Originally, I wanted to be the first person on Mars, that was what I was thinking, and I got interested in astronomy, started reading a lot of science stuff. I got to junior high school and I had an amazing math teacher. His name was Mr. Wall. I had him two years, in the eighth and ninth grade. He was teaching the New Math to us before there was such a thing as “New Math.” He taught us Peano’s axioms and things like that. It was a wonderful thing for a kid like me who was really excited about science and mathematics and so on. The other thing that happened was I discovered Scientific American in the public library and started reading Martin Gardner’s columns on mathematical games and was completely fascinated.
    [Show full text]
  • The Scots in Sweden Part Ii
    THE SCOTS IN SWEDEN PART II (D) MILITARIA THE PERIOD OF CHARLES XII. No two other nations can boast of so large an element of romance in their history as the Scottish and the Swedish nations. The reader often forgets that he has facts before him, and not the most poetically fanciful or barbarously frightful imaginations of an overwrought brain. Think of the amount of mystery that enters into the life of Mary Queen of Scots; of the death-feuds of the Highland clans; of the wanderings of the Pretender. In Swedish history what can be more romantic than the adventurous youth of Gustavus Vasa, and the imprisonment, madness, and poisoning of King Erik XIV.? Whole periods in the life of Gustavus Adolphus - I here especially allude to his “Brautfahrt” (“search for a bride”) in Germany - are still shrouded in mystery, and now we come to the most romantic King of all, the stubbornly brave, fiery, and thoughtless Charles XII. - not a man who would have been, like Gustavus Adolphus, equally great in the tranquil times of peace, had he ever known them; not a lovable, wise man like Gustavus Vasa, whom the cruel persecutions of his youth did not render bitter and revengeful; but a remarkable man all the same, with something of meteoric rapidity and demoniac splendour in him or rather in his career. For he himself was plain almost to shabbiness, plain in speech, in his food, and in his dress. No strong drink ever passed his lips after the follies of his youth. But his great characteristic was his uncurbed love of war.
    [Show full text]
  • 1. Course Information Are Handed Out
    6.826—Principles of Computer Systems 2006 6.826—Principles of Computer Systems 2006 course secretary's desk. They normally cover the material discussed in class during the week they 1. Course Information are handed out. Delayed submission of the solutions will be penalized, and no solutions will be accepted after Thursday 5:00PM. Students in the class will be asked to help grade the problem sets. Each week a team of students Staff will work with the TA to grade the week’s problems. This takes about 3-4 hours. Each student will probably only have to do it once during the term. Faculty We will try to return the graded problem sets, with solutions, within a week after their due date. Butler Lampson 32-G924 425-703-5925 [email protected] Policy on collaboration Daniel Jackson 32-G704 8-8471 [email protected] We encourage discussion of the issues in the lectures, readings, and problem sets. However, if Teaching Assistant you collaborate on problem sets, you must tell us who your collaborators are. And in any case, you must write up all solutions on your own. David Shin [email protected] Project Course Secretary During the last half of the course there is a project in which students will work in groups of three Maria Rebelo 32-G715 3-5895 [email protected] or so to apply the methods of the course to their own research projects. Each group will pick a Office Hours real system, preferably one that some member of the group is actually working on but possibly one from a published paper or from someone else’s research, and write: Messrs.
    [Show full text]
  • The Norse Influence on Celtic Scotland Published by James Maclehose and Sons, Glasgow
    i^ttiin •••7 * tuwn 1 1 ,1 vir tiiTiv^Vv5*^M òlo^l^!^^ '^- - /f^K$ , yt A"-^^^^- /^AO. "-'no.-' iiuUcotettt>tnc -DOcholiiunc THE NORSE INFLUENCE ON CELTIC SCOTLAND PUBLISHED BY JAMES MACLEHOSE AND SONS, GLASGOW, inblishcre to the anibersitg. MACMILLAN AND CO., LTD., LONDON. New York, • • The Macmillan Co. Toronto, • - • The Mactnillan Co. of Canada. London, • . - Simpkin, Hamilton and Co. Cambridse, • Bowes and Bowes. Edinburgh, • • Douglas and Foults. Sydney, • • Angus and Robertson. THE NORSE INFLUENCE ON CELTIC SCOTLAND BY GEORGE HENDERSON M.A. (Edin.), B.Litt. (Jesus Coll., Oxon.), Ph.D. (Vienna) KELLY-MACCALLUM LECTURER IN CELTIC, UNIVERSITY OF GLASGOW EXAMINER IN SCOTTISH GADHELIC, UNIVERSITY OF LONDON GLASGOW JAMES MACLEHOSE AND SONS PUBLISHERS TO THE UNIVERSITY I9IO Is buaine focal no toic an t-saoghail. A word is 7nore lasting than the world's wealth. ' ' Gadhelic Proverb. Lochlannaich is ànnuinn iad. Norsemen and heroes they. ' Book of the Dean of Lismore. Lochlannaich thi'eun Toiseach bhiir sgéil Sliochd solta ofrettmh Mhamiis. Of Norsemen bold Of doughty mould Your line of oldfrom Magnus. '' AIairi inghean Alasdair Ruaidh. PREFACE Since ever dwellers on the Continent were first able to navigate the ocean, the isles of Great Britain and Ireland must have been objects which excited their supreme interest. To this we owe in part the com- ing of our own early ancestors to these isles. But while we have histories which inform us of the several historic invasions, they all seem to me to belittle far too much the influence of the Norse Invasions in particular. This error I would fain correct, so far as regards Celtic Scotland.
    [Show full text]
  • Dissolving a Half Century Old Problem About the Implementation of Procedures
    JID:SCICO AID:2123 /FLA [m3G; v1.221; Prn:28/08/2017; 16:24] P.1(1-12) Science of Computer Programming ••• (••••) •••–••• Contents lists available at ScienceDirect Science of Computer Programming www.elsevier.com/locate/scico Dissolving a half century old problem about the implementation of procedures Gauthier van den Hove CWI, SWAT, Science Park 123, 1098 XG Amsterdam, The Netherlands a r t i c l e i n f o a b s t r a c t Article history: We investigate the semantics of the procedure concept, and of one of the main techniques Received 21 June 2014 introduced by E. W. Dijkstra in his article Recursive Programming to implement it, namely Received in revised form 11 July 2017 the “static link,” sometimes also called “access link” or “lexical link.” We show that a Accepted 14 July 2017 confusion about that technique persists, even in recent textbooks. Our analysis is meant to Available online xxxx clarify the meaning of that technique, and of the procedure concept. Our main contribution Keywords: is to propose a better characterization of the “static link.” © Static link 2017 Elsevier B.V. All rights reserved. Block Closure Lexical scope Procedure 1. Introduction One of the first concepts introduced in the development of programming languages is the procedure concept. Its first precise definition appears in the ALGOL 60 Report, together with the static (or lexical) scope rule. Its implementation poses a number of difficulties, and the now classical solution to solve these difficulties, for ALGOL-like languages, was proposed by Dijkstra in his article Recursive Programming [1].
    [Show full text]
  • The Growth of Cryptography
    The growth of cryptography Ronald L. Rivest Viterbi Professor of EECS MIT, Cambridge, MA James R. Killian Jr. Faculty Achievement Award Lecture February 8, 2011 Outline Some pre-1976 context Invention of Public-Key Crypto and RSA Early steps The cryptography business Crypto policy Attacks More New Directions What Next? Conclusion and Acknowledgments Outline Some pre-1976 context Invention of Public-Key Crypto and RSA Early steps The cryptography business Crypto policy Attacks More New Directions What Next? Conclusion and Acknowledgments The greatest common divisor of two numbers is easily computed (using “Euclid’s Algorithm”): gcd(12; 30) = 6 Euclid – 300 B.C. There are infinitely many primes: 2, 3, 5, 7, 11, 13, . Euclid – 300 B.C. There are infinitely many primes: 2, 3, 5, 7, 11, 13, . The greatest common divisor of two numbers is easily computed (using “Euclid’s Algorithm”): gcd(12; 30) = 6 Greek Cryptography – The Scytale An unknown period (the circumference of the scytale) is the secret key, shared by sender and receiver. Euler’s Theorem (1736): If gcd(a; n) = 1, then aφ(n) = 1 (mod n) ; where φ(n) = # of x < n such that gcd(x; n) = 1. Pierre de Fermat (1601-1665) Leonhard Euler (1707–1783) Fermat’s Little Theorem (1640): For any prime p and any a, 1 ≤ a < p: ap−1 = 1 (mod p) Pierre de Fermat (1601-1665) Leonhard Euler (1707–1783) Fermat’s Little Theorem (1640): For any prime p and any a, 1 ≤ a < p: ap−1 = 1 (mod p) Euler’s Theorem (1736): If gcd(a; n) = 1, then aφ(n) = 1 (mod n) ; where φ(n) = # of x < n such that gcd(x; n) = 1.
    [Show full text]
  • The RSA Algorithm
    The RSA Algorithm Evgeny Milanov 3 June 2009 In 1978, Ron Rivest, Adi Shamir, and Leonard Adleman introduced a cryptographic algorithm, which was essentially to replace the less secure National Bureau of Standards (NBS) algorithm. Most impor- tantly, RSA implements a public-key cryptosystem, as well as digital signatures. RSA is motivated by the published works of Diffie and Hellman from several years before, who described the idea of such an algorithm, but never truly developed it. Introduced at the time when the era of electronic email was expected to soon arise, RSA implemented two important ideas: 1. Public-key encryption. This idea omits the need for a \courier" to deliver keys to recipients over another secure channel before transmitting the originally-intended message. In RSA, encryption keys are public, while the decryption keys are not, so only the person with the correct decryption key can decipher an encrypted message. Everyone has their own encryption and decryption keys. The keys must be made in such a way that the decryption key may not be easily deduced from the public encryption key. 2. Digital signatures. The receiver may need to verify that a transmitted message actually origi- nated from the sender (signature), and didn't just come from there (authentication). This is done using the sender's decryption key, and the signature can later be verified by anyone, using the corresponding public encryption key. Signatures therefore cannot be forged. Also, no signer can later deny having signed the message. This is not only useful for electronic mail, but for other electronic transactions and transmissions, such as fund transfers.
    [Show full text]
  • 2020-21 Faculty Book
    Gustavus Adolphus College Saint Peter, Minnesota 2020-21 Faculty Book CONTENTS All-College Policies (Gray Pages) Faculty Committees (Green Pages) Faculty Handbook (Yellow Pages) Faculty Manual (Blue Pages) Governing Documents (Purple Pages) Shared Governance Principles (White Pages) All-College Policies, 2020-21 All-College Policies, 2020-21 ............................................................................................................................................ 1 To the Gustavus Community ........................................................................................................................................... 2 Access to Student Records ................................................................................................................................................ 2 Alcohol Serving Policy ....................................................................................................................................................... 2 Bereavement Policy ............................................................................................................................................................ 3 Cancellation/Delay/Closure Policy ................................................................................................................................. 3 Compensation Certification Policy .................................................................................................................................. 5 Conflict of Interest Policy for Committee Participation
    [Show full text]
  • Steven Adriaensen, on the Semi-Automated Design Of
    Faculty of Science and Bio-Engineering Sciences Department of Computer Science Artificial Intelligence Laboratory On the Semi-automated Design of Reusable Heuristics with applications to hard combinatorial optimization Dissertation submitted in fulfilment of the requirements for the degree of Doctor of Science: Computer Science Steven Adriaensen Promotor: Prof. Dr. Ann Nowé (Vrije Universiteit Brussel) © 2018 Steven Adriaensen All rights reserved. No parts of this book may be reproduced or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of the author. Abstract These days, many scientific and engineering disciplines rely on standardization and auto- mated tools. Somewhat ironically, the design of the algorithms underlying these tools is often a highly manual, ad hoc, experience- and intuition-driven process, commonly regarded as an “art” rather than a “science”. The research performed in the scope of this dissertation is geared towards improving the way we design algorithms. Here, we treat algorithm design itself as a computational problem, which we refer to as the Algorithm Design Problem (ADP). In a sense, we study “algorithms for designing algorithms”. The main topic we investigate in this framework is the possibility of solving the ADP automatically. Letting computers, rather than humans, design algorithms has numerous potential benefits. The idea of automating algorithm design is definitely not “new”. At- tempts to do so can be traced back to the origins of computer science, and, ever since, the ADP, in one form or another, has been considered in many different research communities. Therefore, we first present an overview of this vast and highly fragmented field, relating the different approaches, discussing their respective strengths and weaknesses, towards enabling a more unified approach to automated algorithm design.
    [Show full text]
  • A Library of Graph Algorithms and Supporting Data Structures
    Washington University in St. Louis Washington University Open Scholarship All Computer Science and Engineering Research Computer Science and Engineering Report Number: WUCSE-2015-001 2015-01-19 Grafalgo - A Library of Graph Algorithms and Supporting Data Structures Jonathan Turner This report provides an overview of Grafalgo, an open-source library of graph algorithms and the data structures used to implement them. The programs in this library were originally written to support a graduate class in advanced data structures and algorithms at Washington University. Because the code's primary purpose was pedagogical, it was written to be as straightforward as possible, while still being highly efficient. afalgoGr is implemented in C++ and incorporates some features of C++11. The library is available on an open-source basis and may be downloaded from https://code.google.com/p/grafalgo/. Source code documentation is at www.arl.wustl.edu/~jst/doc/grafalgo. While not designed as... Read complete abstract on page 2. Follow this and additional works at: https://openscholarship.wustl.edu/cse_research Part of the Computer Engineering Commons, and the Computer Sciences Commons Recommended Citation Turner, Jonathan, "Grafalgo - A Library of Graph Algorithms and Supporting Data Structures" Report Number: WUCSE-2015-001 (2015). All Computer Science and Engineering Research. https://openscholarship.wustl.edu/cse_research/242 Department of Computer Science & Engineering - Washington University in St. Louis Campus Box 1045 - St. Louis, MO - 63130 - ph: (314) 935-6160. This technical report is available at Washington University Open Scholarship: https://openscholarship.wustl.edu/ cse_research/242 Grafalgo - A Library of Graph Algorithms and Supporting Data Structures Jonathan Turner Complete Abstract: This report provides an overview of Grafalgo, an open-source library of graph algorithms and the data structures used to implement them.
    [Show full text]
  • Machine Models for Type-2 Polynomial-Time Bounded Functionals
    Syracuse University SURFACE College of Engineering and Computer Science - Former Departments, Centers, Institutes and College of Engineering and Computer Science Projects 1997 Semantics vs. Syntax vs. Computations: Machine models for type-2 polynomial-time bounded functionals James S. Royer Syracuse University, School of Computer and Information Science, [email protected] Follow this and additional works at: https://surface.syr.edu/lcsmith_other Part of the Computer Sciences Commons Recommended Citation Royer, James S., "Semantics vs. Syntax vs. Computations: Machine models for type-2 polynomial-time bounded functionals" (1997). College of Engineering and Computer Science - Former Departments, Centers, Institutes and Projects. 19. https://surface.syr.edu/lcsmith_other/19 This Article is brought to you for free and open access by the College of Engineering and Computer Science at SURFACE. It has been accepted for inclusion in College of Engineering and Computer Science - Former Departments, Centers, Institutes and Projects by an authorized administrator of SURFACE. For more information, please contact [email protected]. Semantics vs. Syntax vs. Computations Machine Models for Type-2 Polynomial-Time Bounded Functionals Intermediate Draft, Revision 2 + ǫ James S. Royer School of Computer and Information Science Syracuse University Syracuse, NY 13244 USA Email: [email protected] Abstract This paper investigates analogs of the Kreisel-Lacombe-Shoen®eld Theorem in the con- text of the type-2 basic feasible functionals. We develop a direct, polynomial-time analog of effective operation in which the time boundingon computationsismodeled after Kapronand Cook's scheme fortheirbasic poly- nomial-time functionals. We show that if P = NP, these polynomial-time effective op- erations are strictly more powerful on R (the class of recursive functions) than the basic feasible functions.
    [Show full text]
  • Download a Pdf File of This Issue for Free
    Issue 63: How the Vikings Took up the Faith Conversion of the Vikings: Did You Know? Fascinating and little-known facts about the Vikings and their times. What's a Viking? To the Franks, they were Northmen or Danes (no matter if they were from Denmark or not). The English called them Danes and heathens. To the Irish, they were pagans. Eastern Europe called them the Rus. But the Norse term is the one that stuck: Vikings. The name probably came from the Norse word vik, meaning "bay" or "creek," or from the Vik area, the body of water now called Skagerrak, which sits between Denmark, Norway, and Sweden. In any case, it probably first referred only to the raiders (víkingr means pirate) and was later applied to Scandinavians as a whole between the time of the Lindesfarne raid (793) and the Battle of Hastings (1066). Thank the gods it's Frigg's day. Though Vikings have a reputation for hit-and-run raiding, Vikings actually settled down and influenced European culture long after the fires of invasion burned out. For example, many English words have roots in Scandinavian speech: take, window, husband, sky, anger, low, scant, loose, ugly, wrong, happy, thrive, ill, die, beer, anchor. … The most acute example is our days of the week. Originally the Romans named days for the seven most important celestial bodies (sun, moon, Mars, Mercury, Jupiter, Venus, and Saturn). The Anglo-Saxons inserted the names of some Norse deities, by which we now name Tuesday through Friday: the war god Tiw (Old English for Tyr), Wodin (Odin), Thor, and fertility goddess Frigg.
    [Show full text]