A Distributed Execution Engine Supporting Data-Dependent Control flow

Total Page:16

File Type:pdf, Size:1020Kb

A Distributed Execution Engine Supporting Data-Dependent Control flow A distributed execution engine supporting data-dependent control flow Derek Gordon Murray University of Cambridge Computer Laboratory King’s College July 2011 This dissertation is submitted for the degree of Doctor of Philosophy Declaration This dissertation is the result of my own work and includes nothing which is the outcome of work done in collaboration except where specifically indicated in the text. This dissertation does not exceed the regulation length of 60,000 words, including tables and footnotes. A distributed execution engine supporting data-dependent control flow Derek G. Murray Summary In computer science, data-dependent control flow is the fundamental concept that enables a machine to change its behaviour on the basis of intermediate results. This ability increases the computational power of a machine, because it enables the machine to execute iterative or recursive algorithms. In such algorithms, the amount of work is unbounded a priori, and must be determined by evaluating a fixpoint condition on successive intermediate results. For example, in the von Neumann architecture—upon which almost all modern computers are based—these algorithms can be programmed using a conditional branch instruction. A distributed execution engine is a system that runs on a network of computers, and provides the illusion of a single, reliable machine that provides a large aggregate amount of compu- tational and I/O performance. Although each individual computer in these systems is a von Neumann machine capable of data-dependent control flow, the effective computational power of a distributed execution engine is determined by the expressiveness of the execution model that describes distributed computations. In this dissertation, I present a new execution model for distributed execution engines that sup- ports data-dependent control flow. The model is based on dynamic task graphs, in which each vertex is a sequential computation that may decide, on the basis of its input, to spawn additional computation and hence rewrite the graph. I have developed a prototype system that executes dynamic task graphs, and discuss details of its design and implementation, including the fault tolerance mechanisms that maintain reliability throughout dynamic task graph execution. Dy- namic task graphs support a variety of programming models, and I introduce a model based on multiple distributed threads of execution that synchronise deterministically using futures and continuations. To demonstrate the practicality of dynamic task graphs, I have evaluated its per- formance on several microbenchmarks and realistic applications, and it achieves performance that is similar to or better than an existing, less-powerful execution engine. Acknowledgements Foremost, I would like to thank my supervisor, Steve Hand, for his help and encouragement over the past four years. Through many hours of meetings, and his comments on countless drafts of this document, Steve’s feedback has been vital in helping me to shape my thesis. The system at the centre of this dissertation, CIEL, has grown from one student’s thesis project to become a thriving collaborative effort. The other members of the CIEL team are Malte Schwarzkopf, Chris Smowton, Anil Madhavapeddy and Steven Smith, and I am indebted to all of them for their contribution to the project’s success. CIEL also spawned a Part II undergradu- ate project, and I thank Seb Hollington for being such an enthusiastic supervisee. In addition to the team members, several current and former colleagues in the Computer Labo- ratory have commented on drafts of this dissertation. I am grateful to Jon Crowcroft, Stephen Kell, Amitabha Roy, Eiko Yoneki and Ross McIlroy for their comments and suggestions, which have greatly improved the clarity of my writing. I would also like to thank Andy Warfield of the University of British Columbia for his frequent invitations to give talks in Vancouver; as well as being enjoyable, the feedback that I have received has been useful in developing the ideas that I present in this dissertation. The genesis of CIEL can be traced to the summer internship that I spent at Microsoft Research in Silicon Valley. I thank Michael Isard and Yuan Yu for giving me the opportunity to work on the Dryad project. Working with Dryad gave me useful experience in using a real-world distributed system, and helped me to realise that there was an opportunity to develop a more powerful system. Contents 1 Introduction 11 1.1 Contributions . 12 1.2 Outline . 13 1.3 Related publications . 14 2 Background and related work 15 2.1 Scales of parallelism . 17 2.2 Parallel programming models . 25 2.3 Coordinating distributed tasks . 36 2.4 Summary . 46 3 Dynamic task graphs 47 3.1 Definitions . 48 3.2 Executing a dynamic task graph . 55 3.3 Relation to other execution models . 59 3.4 Summary . 70 4 A universal execution engine 72 4.1 Distributed coordination . 73 4.2 A simple distributed store . 80 4.3 Scheduling . 87 4.4 Fault tolerance . 95 4.5 Summary . 99 CONTENTS CONTENTS 5 Parallel programming models 100 5.1 Implementing existing models . 100 5.2 First-class executors . 105 5.3 Distributed thread programming model . 109 5.4 Summary . 125 6 Evaluation 127 6.1 Experimental configuration . 129 6.2 Task handling . 129 6.3 MapReduce . 134 6.4 Iterative k-means . 138 6.5 Fault tolerance . 141 6.6 Streaming . 144 6.7 Summary . 147 7 Conclusions and future work 149 7.1 Extending dynamic task graphs . 150 7.2 Alternative system architectures . 151 7.3 Separating policy from mechanism . 152 7.4 Summary . 153 6 List of Figures 2.1 An outline of the topics that have influenced dynamic task graphs . 16 2.2 Models of MIMD parallelism . 19 2.3 A message-passing version of Conway’s Game of Life . 28 2.4 A simple data-flow graph . 31 2.5 Basic task farm architecture . 36 2.6 Data-flow graphs for various models of task parallelism . 37 2.7 Example of acyclic data-flow in make ...................... 41 3.1 Symbols representing a concrete object and a future object . 48 3.2 Illustration of a store with concrete and future objects . 49 3.3 Illustration of a task with dependencies and expected outputs . 50 3.4 Illustration of task output delegation . 54 3.5 Lazy evaluation algorithm for evaluating an object in a dynamic task graph . 58 3.6 Dynamic task graphs for recursively calculating the nth Fibonacci number. 60 3.7 Dynamic task graph for performing a MapReduce computation . 62 3.8 Dynamic task graph for the first two supersteps of a Pregel computation . 65 3.9 Implementation of mutable state in a dynamic task graph . 67 3.10 Dynamic task graph for two iterations of a while loop . 68 4.1 The reference lifecycle . 72 4.2 A CIEL cluster has one or more clients, a single master and many workers . 73 4.3 Example job descriptor for a π-estimation job. 77 4.4 Pseudocode for the CIEL master and worker . 78 4.5 Representation of a Java example task and its code dependency . 79 4.6 Expected load distribution using two different replica placement strategies . 84 LIST OF FIGURES LIST OF FIGURES 4.7 Proportion of data-local tasks as the cluster size is varied . 89 4.8 Distribution of input object replication factors as an iterative job executes . 90 4.9 Non-local tasks in the first 20 iterations of k-means clustering . 93 4.10 Execution time for the first 20 iterations of k-means clustering . 94 4.11 Mechanisms for providing master fault tolerance. 98 5.1 Pseudocode for a MapReduce map task . 104 5.2 Rules for computing the result of the executor function for a first-class task . 105 5.3 Dynamic task graph for a distributed thread, comprising three tasks . 110 5.4 A continuation in a distributed thread . 111 5.5 Dynamic task graphs for Skywriting tasks . 115 5.6 Dynamic task graph for a Skywriting script that blocks on a child task . 115 6.1 A synthetic sequential workload . 131 6.2 A synthetic parallel workload . 132 6.3 A synthetic iterative workload . 133 6.4 Comparison of Hadoop and CIEL absolute performance for π estimation . 136 6.5 Comparison of Hadoop and CIEL parallel speedup for π estimation . 136 6.6 Comparison of Hadoop and CIEL absolute performance for Grep . 137 6.7 Comparison of Hadoop and CIEL execution time for k-means clustering . 139 6.8 Comparison of MPI and optimised CIEL execution time of k-means clustering . 139 6.9 Distribution of master overhead with and without fault tolerance . 141 6.10 The overhead of master fault tolerance under randomly-induced failures . 143 6.11 Streaming throughput in TCP and HTTP modes . 145 6.12 Illustration of the data dependencies in a BOPM calculation . 146 6.13 Speedup of BOPM for various problem sizes . 147 7.1 Possible representation for non-deterministic select in a dynamic task graph . 152 8 List of Tables 3.1 Definition of a dynamic task graph for calculating the nth Fibonacci number . 60 3.2 Definition of a dynamic task graph for performing a MapReduce computation . 61 3.3 Definition of a dynamic task graph for performing a Pregel computation . 64 3.4 Definition of a dynamic task graph for executing a while program . 68 4.1 Rules for combining an existing reference with an incoming reference . 76 4.2 Rules for combining an existing reference with an incoming stream reference . 85 4.3 Rules for combining an existing reference with an incoming sweetheart reference 91 4.4 Rules for combining an existing reference with an incoming tombstone reference 97 5.1 Rules for combining a fixed reference with an incoming tombstone reference .
Recommended publications
  • Working on ENIAC: the Lost Labors of the Information Age
    Working on ENIAC: The Lost Labors of the Information Age Thomas Haigh www.tomandmaria.com/tom University of Wisconsin—Milwaukee & Mark Priestley www.MarkPriestley.net This Research Is Sponsored By • Mrs L.D. Rope’s Second Charitable Trust • Mrs L.D. Rope’s Third Charitable Trust Thanks for contributions by my coauthors Mark Priestley & Crispin Rope. And to assistance from others including Ann Graf, Peter Sachs Collopy, and Stephanie Dick. www.EniacInAction.com CONVENTIONAL HISTORY OF COMPUTING www.EniacInAction.com The Battle for “Firsts” www.EniacInAction.com Example: Alan Turing • A lone genius, according to The Imitation Game – “I don’t have time to explain myself as I go along, and I’m afraid these men will only slow me down” • Hand building “Christopher” – In reality hundreds of “bombes” manufactured www.EniacInAction.com Isaacson’s “The Innovators” • Many admirable features – Stress on teamwork – Lively writing – References to scholarly history – Goes back beyond 1970s – Stresses role of liberal arts in tech innovation • But going to disagree with some basic assumptions – Like the subtitle! www.EniacInAction.com Amazon • Isaacson has 7 of the top 10 in “Computer Industry History” – 4 Jobs – 3 Innovators www.EniacInAction.com Groundbreaking for “Pennovation Center” Oct, 2014 “Six women Ph.D. students were tasked with programming the machine, but when the computer was unveiled to the public on Valentine’s Day of 1946, Isaacson said, the women programmers were not invited to the black tie event after the announcement.” www.EniacInAction.com Teams of Superheroes www.EniacInAction.com ENIAC as one of the “Great Machines” www.EniacInAction.com ENIAC Life Story • 1943: Proposed and approved.
    [Show full text]
  • Herman Heine Goldstine
    Herman Heine Goldstine Born September 13, 1913, Chicago, Ill.; Army representative to the ENIAC Project, who later worked with John von Neumann on the logical design of the JAS computer which became the prototype for many early computers-ILLIAC, JOHNNIAC, MANIAC author of The Computer from Pascal to von Neumann, one of the earliest textbooks on the history of computing. Education: BS, mathematics, University of Chicago, 1933; MS, mathematics, University of Chicago, 1934; PhD, mathematics, University of Chicago, 1936. Professional Experience: University of Chicago: research assistant, 1936-1937, instructor, 1937-1939; assistant professor, University of Michigan, 1939-1941; US Army, Ballistic Research Laboratory, Aberdeen, Md., 1941-1946; Institute for Advanced Study, Princeton University, 1946-1957; IBM: director, Mathematics Sciences Department, 1958-1965, IBM fellow, 1969. Honors and Awards: IEEE Computer Society Pioneer Award, 1980; National Medal of Science, 1985; member, Information Processing Hall of Fame, Infornart, Dallas, Texas, 1985. Herman H. Goldstine began his scientific career as a mathematician and had a life-long interest in the interaction of mathematical ideas and technology. He received his PhD in mathematics from the University of Chicago in 1936 and was an assistant professor at the University of Michigan when he entered the Army in 1941. After participating in the development of the first electronic computer (ENIAC), he left the Army in 1945, and from 1946 to 1957 he was a member of the Institute for Advanced Study (IAS), where he collaborated with John von Neumann in a series of scientific papers on subjects related to their work on the Institute computer. In 1958 he joined IBM Corporation as a member of the research planning staff.
    [Show full text]
  • Comparative Studies of Programming Languages; Course Lecture Notes
    Comparative Studies of Programming Languages, COMP6411 Lecture Notes, Revision 1.9 Joey Paquet Serguei A. Mokhov (Eds.) August 5, 2010 arXiv:1007.2123v6 [cs.PL] 4 Aug 2010 2 Preface Lecture notes for the Comparative Studies of Programming Languages course, COMP6411, taught at the Department of Computer Science and Software Engineering, Faculty of Engineering and Computer Science, Concordia University, Montreal, QC, Canada. These notes include a compiled book of primarily related articles from the Wikipedia, the Free Encyclopedia [24], as well as Comparative Programming Languages book [7] and other resources, including our own. The original notes were compiled by Dr. Paquet [14] 3 4 Contents 1 Brief History and Genealogy of Programming Languages 7 1.1 Introduction . 7 1.1.1 Subreferences . 7 1.2 History . 7 1.2.1 Pre-computer era . 7 1.2.2 Subreferences . 8 1.2.3 Early computer era . 8 1.2.4 Subreferences . 8 1.2.5 Modern/Structured programming languages . 9 1.3 References . 19 2 Programming Paradigms 21 2.1 Introduction . 21 2.2 History . 21 2.2.1 Low-level: binary, assembly . 21 2.2.2 Procedural programming . 22 2.2.3 Object-oriented programming . 23 2.2.4 Declarative programming . 27 3 Program Evaluation 33 3.1 Program analysis and translation phases . 33 3.1.1 Front end . 33 3.1.2 Back end . 34 3.2 Compilation vs. interpretation . 34 3.2.1 Compilation . 34 3.2.2 Interpretation . 36 3.2.3 Subreferences . 37 3.3 Type System . 38 3.3.1 Type checking . 38 3.4 Memory management .
    [Show full text]
  • Manydsl One Host for All Language Needs
    ManyDSL One Host for All Language Needs Piotr Danilewski March 2017 A dissertation submitted towards the degree (Dr.-Ing.) of the Faculty of Mathematics and Computer Science of Saarland University. Saarbrücken Dean Prof. Dr. Frank-Olaf Schreyer Date of Colloquium June 6, 2017 Examination Board: Chairman Prof. Dr. Sebastian Hack Reviewers Prof. Dr.-Ing. Philipp Slusallek Prof. Dr. Wilhelm Reinhard Scientific Asistant Dr. Tim Dahmen Piotr Danilewski, [email protected] Saarbrücken, June 6, 2017 Statement I hereby declare that this dissertation is my own original work except where otherwise indicated. All data or concepts drawn directly or indirectly from other sources have been correctly acknowledged. This dissertation has not been submitted in its present or similar form to any other academic institution either in Germany or abroad for the award of any degree. Saarbrücken, June 6, 2017 (Piotr Danilewski) Declaration of Consent Herewith I agree that my thesis will be made available through the library of the Computer Science Department. Saarbrücken, June 6, 2017 (Piotr Danilewski) Zusammenfassung Die Sprachen prägen die Denkweise. Das ist die Tatsache für die gesprochenen Sprachen aber auch für die Programmiersprachen. Da die Computer immer wichtiger in jedem Aspekt des menschlichen Lebens sind, steigt der Bedarf um entsprechend neue Konzepte in den Programmiersprachen auszudrücken. Jedoch, damit unsere Denkweise sich weiterentwicklen könnte, müssen sich auch die Programmiersprachen weiterentwickeln. Aber welche Hilfsmittel gibt es um die Programmiersprachen zu schaffen und aufzurüsten? Wie kann man Entwickler ermutigen damit sie eigene Sprachen definieren, die dem Bereich in dem sie arbeiten am besten passen? Heutzutage gibt es zwei Methoden.
    [Show full text]
  • Mccarthy.Pdf
    HISTORY OF LISP John McCarthy A rtificial Intelligence Laboratory Stanford University 1. Introduction. 2. LISP prehistory - Summer 1956 through Summer 1958. This paper concentrates on the development of the basic My desire for an algebraic list processing language for ideas and distinguishes two periods - Summer 1956 through artificial intelligence work on the IBM 704 computer arose in the Summer 1958 when most of the key ideas were developed (some of summer of 1956 during the Dartmouth Summer Research Project which were implemented in the FORTRAN based FLPL), and Fall on Artificial Intelligence which was the first organized study of AL 1958 through 1962 when the programming language was During this n~eeting, Newell, Shaa, and Fimon described IPL 2, a implemented and applied to problems of artificial intelligence. list processing language for Rand Corporation's JOHNNIAC After 1962, the development of LISP became multi-stranded, and different ideas were pursued in different places. computer in which they implemented their Logic Theorist program. There was little temptation to copy IPL, because its form was based Except where I give credit to someone else for an idea or on a JOHNNIAC loader that happened to be available to them, decision, I should be regarded as tentatively claiming credit for It and because the FORTRAN idea of writing programs algebraically or else regarding it as a consequence of previous decisions. was attractive. It was immediately apparent that arbitrary However, I have made mistakes about such matters in the past, and subexpressions of symbolic expressions could be obtained by I have received very little response to requests for comments on composing the functions that extract immediate subexpresstons, and drafts of this paper.
    [Show full text]
  • Application and Interpretation
    Programming Languages: Application and Interpretation Shriram Krishnamurthi Brown University Copyright c 2003, Shriram Krishnamurthi This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States License. If you create a derivative work, please include the version information below in your attribution. This book is available free-of-cost from the author’s Web site. This version was generated on 2007-04-26. ii Preface The book is the textbook for the programming languages course at Brown University, which is taken pri- marily by third and fourth year undergraduates and beginning graduate (both MS and PhD) students. It seems very accessible to smart second year students too, and indeed those are some of my most successful students. The book has been used at over a dozen other universities as a primary or secondary text. The book’s material is worth one undergraduate course worth of credit. This book is the fruit of a vision for teaching programming languages by integrating the “two cultures” that have evolved in its pedagogy. One culture is based on interpreters, while the other emphasizes a survey of languages. Each approach has significant advantages but also huge drawbacks. The interpreter method writes programs to learn concepts, and has its heart the fundamental belief that by teaching the computer to execute a concept we more thoroughly learn it ourselves. While this reasoning is internally consistent, it fails to recognize that understanding definitions does not imply we understand consequences of those definitions. For instance, the difference between strict and lazy evaluation, or between static and dynamic scope, is only a few lines of interpreter code, but the consequences of these choices is enormous.
    [Show full text]
  • Dec. 21St Ladies’ [May 00]
    recruited and trained some of the six ENIAC ‘Refrigerator Dec. 21st Ladies’ [May 00]. Lawrence (Larry) In 1945, she wrote the “Manual for the ENIAC”; the first Gilman Roberts George Barnard technical description of the machine, detailed right down to Born: Dec. 21, 1937; Grant the resistor level. Connecticut Died: Dec 30, 2018 Born: Dec. 21, 1849; In 1946, Goldstine, Jean Bartik Gardiner, Maine [Dec 27] and Dick Clippinger, Roberts is often called one of the Died: Aug. 16, 1917 implemented Clippinger’s stored “Fathers of the ARPANET,” [Oct 29] a title he earned by being its Grant is called the "Father of the program modifications to the principal architect, and directing American Gear Cutting ENIAC, with John von Neumann the team that built it. Other Industry,” because of how his [Dec 28] acting as a consultant ARPANET fathers include Bob work on building mechanical on the instruction set. Kahn [Dec 23], Vint Cerf [June calculating machines affected 23], and Jon Postel [Aug 6]. that industry. Roberts first became interested While a student at Harvard, he Douglas Taylor in timesharing networks after became interested in Charles reading J.C.R. Licklider’s [March Babbage’s [Dec 26] and Per Ross 11] memos on the “Intergalactic Georg Scheutz’s [Sept 23] Born: Dec. 21, 1929; Computer Network” [May 1] , differential engines, and China (his US parents were and after meeting him at a designed one himself. He missionaries) conference in Virginia in Nov. published his work in the Died: Jan. 31, 2007 1964. Aug.1871 issue of the American Journal of Science and Arts, and Ross developed the APT In Oct.
    [Show full text]
  • ©2007 Melissa Tracey Brown ALL RIGHTS RESERVED
    ©2007 Melissa Tracey Brown ALL RIGHTS RESERVED ENLISTING MASCULINITY: GENDER AND THE RECRUITMENT OF THE ALL-VOLUNTEER FORCE by MELISSA TRACEY BROWN A Dissertation submitted to the Graduate School-New Brunswick Rutgers, The State University of New Jersey in partial fulfillment of the requirements for the degree of Doctor of Philosophy Graduate Program in Political Science written under the direction of Leela Fernandes and approved by ________________________ ________________________ ________________________ ________________________ New Brunswick, New Jersey October, 2007 ABSTRACT OF THE DISSERTATION Enlisting Masculinity: Gender and the Recruitment of the All-Volunteer Force By MELISSA TRACEY BROWN Dissertation Director: Leela Fernandes This dissertation explores how the US military branches have coped with the problem of recruiting a volunteer force in a period when masculinity, a key ideological underpinning of military service, was widely perceived to be in crisis. The central questions of this dissertation are: when the military appeals to potential recruits, does it present service in masculine terms, and if so, in what forms? How do recruiting materials construct gender as they create ideas about soldiering? Do the four service branches, each with its own history, institutional culture, and specific personnel needs, deploy gender in their recruiting materials in significantly different ways? In order to answer these questions, I collected recruiting advertisements published by the four armed forces in several magazines between 1970 and 2003 and analyzed them using an interpretive textual approach. The print ad sample was supplemented with television commercials, recruiting websites, and media coverage of recruiting. The dissertation finds that the military branches have presented several versions of masculinity, including both transformed models that are gaining dominance in the civilian sector and traditional warrior forms.
    [Show full text]
  • LISP Session
    LISP Session Chairman: Barbara Liskov Speaker: John McCarthy Discussant: Paul Abrahams PAPER: HISTORY OF LISP John McCarthy 1. Introduction This paper concentrates on the development of the basic ideas and distinguishes two periods--Summer 1956 through Summer 1958, when most of the key ideas were devel- oped (some of which were implemented in the FORTRAN-based FLPL), and Fall 1958 through 1962, when the programming language was implemented and applied to problems of artificial intelligence. After 1962, the development of LISP became multistranded, and different ideas were pursued in different places. Except where I give credit to someone else for an idea or decision, I should be regarded as tentatively claiming credit for it or else regarding it as a consequence of previous deci- sions. However, I have made mistakes about such matters in the past, and I have received very little response to requests for comments on drafts of this paper. It is particularly easy to take as obvious a feature that cost someone else considerable thought long ago. As the writing of this paper approaches its conclusion, I have become aware of additional sources of information and additional areas of uncertainty. As a programming language, LISP is characterized by the following ideas: computing with symbolic expressions rather than numbers, representation of symbolic expressions and other information by list structure in the memory of a computer, representation of in- formation in external media mostly by multilevel lists and sometimes by S-expressions, a small
    [Show full text]
  • Flexible Supply Chain Simulation
    J. Manuel Feliz-Teixeira Flexible Supply Chain Simulation Thesis 01 MARCH 2006 Text submitted in partial fulfilment for the degree of Doctor in Sciences of Engineering Supervisor António E. S. Carvalho Brito Advisor Richard Saw RESEARCH SPONSORED BY THE: THROUGH THE: PUBLISHER: Publindústria® Produção de Comunicação, Lda. EUROPEAN UNION European Social Fund (III framework) Copyright: Ó J. Manuel Feliz-Teixeira All rights reserved First Edition: Porto, 1 March 2006 ISBN: 972-8953-04-6 Legal deposit: 239362/06 Original cover art: Jorge Pereira Publisher: Publindústria, Produção de Comunicação Pr. Da Corujeira, 38 – Apt.3825 4300-144 Porto Portugal Tel: +351.22.589.96.20 Fax: +351.22.589.96.29 Email: [email protected] URL: http://www.publindustria.pt Flexible Supply Chain Simulation Thesis J. Manuel Feliz-Teixeira* 01 March 2006 Text submitted in partial fulfilment for the degree of Doctor in Sciences of Engineering Supervisor: António E. S. Carvalho Brito Advisor: Richard Saw Research sponsored by the: European Social Fund (III framework) Through the: * Complete name: José Manuel Feliz Dias Teixeira i To my mother and my father, and my old professors of Physics. J. Manuel Feliz-Teixeira IMPORTANT NOTE: NOTA IMPORTANTE: The contents of this text are registered with the Portuguese Society of Authors and protected by the law of intellectual rights, including the copyright. No reproductions or publications are allowed without the expressed permission of the author. O conteúdo desta tese encontra-se registado na Sociedade Portuguesa de Autores e está protegido pela lei geral e específica dos direitos de autor, morais e patrimoniais (copyright). Não é permitida qualquer reprodução ou publicação sem o expresso consentimento do autor.
    [Show full text]
  • Computer Programming 1
    Computer programming 1 Computer Programming Copyright © Milo Except where noted, all text is copyright Milo. Unless otherwise specified, all materials in this book are owned by the original copyright holder. PDF version of October 2007 This PDF is version 0 from 14 October 2007. The intent of this free downloadable college text book is to attempt to directly help poor and middle class students with the high cost of college text books by providing a high quality free alternative that can be used in the classroom for a subject that most college students are required to take. This free downloadable book is based on and includes materials from http://www.OSdata.com . Materials from OSdata.com have already been used in more than 300 colleges and universities around the world and have been quoted in studies and policy decisions by the U.S. Navy and the government of the Federal Republic of Germany. This is still a work in progress. Feedback and constructive criticism appreciated (especially feedback from professors who might want to use the finished book). While this book is still being written, professors are free to use specific chapters (or portions of chapters) as class handouts to supplement existing for-profit text books. This same policy will continue to apply after the book is completed, but this policy offers usefulness for many classes right now today even though the book is still incomplete. Poor students should not feel bad about using this book for free. You are exactly who this book is intended to help. You may optionally do volunteer work for the charitable organization of your choice (not political or religious activity — actual work for a charitable organization helping the poor, the elderly, the sick, the disabled, or the environment, etc.).
    [Show full text]
  • <[email protected]> Sent: Tuesday, May 22, 2018 5:32 PM To
    From: [email protected] <[email protected]> Sent: Tuesday, May 22, 2018 5:32 PM To: Smith, Ashley <[email protected]>; Neufeld, Darin <[email protected]> Subject: Golden Door Comment on Newland Sierra GHG Mitigation Attached is a comment letter from Kathy Van Ness of the Golden Door on the Newland Sierra project. Christine Sherer Legal Secretary LATHAM & WATKINS LLP 12670 High Bluff Drive San Diego, CA 92130 Direct Dial: +1.858.523.5440 Fax: +1.858.523.5450 Email: [email protected] http://www.lw.com This email may contain material that is confidential, privileged and/or attorney work product for the sole use of the intended recipient. Any review, disclosure, reliance or distribution by others or forwarding without express permission is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies including any attachments. Latham & Watkins LLP or any of its affiliates may monitor electronic communications sent or received by our networks in order to protect our business and verify compliance with our policies and relevant legal requirements. Any personal information contained or referred to within this electronic communication will be processed in accordance with the firm's privacy notices and Global Privacy Standards available at www.lw.com. Darin Neufeld Ashley Smith Planning and Development Services County of San Diego 5510 Overland Avenue, Suite 310 San Diego, CA 92123 Dear Mr. Neufeld and Ms. Smith: I am writing on behalf of the Golden Door, to follow up my letter in January of this year asking that the County of San Diego (County) to do its part to ensure that greenhouse gas (GHG) emissions are reduced within the County.
    [Show full text]