Wake up with CPS 006 Program Design and Methodology I Computer Science and Programming What Is Computer Science? Computer Scienc

Total Page:16

File Type:pdf, Size:1020Kb

Wake up with CPS 006 Program Design and Methodology I Computer Science and Programming What Is Computer Science? Computer Scienc Computer Science and Programming z Computer Science is more than programming ¾ The discipline is called informatics in many countries ¾ Elements of both science and engineering • Scientists build to learn, engineers learn to build Wake up with CPS 006 – Fred Brooks Program Design and Methodology I ¾ Elements of mathematics, physics, cognitive science, music, art, and many other fields z Computer Science is a young discipline Jeff Forbes ¾ Fiftieth anniversary in 1997, but closer to forty years of research and development ¾ First graduate program at CMU (then Carnegie Tech) in http://www.cs.duke.edu/courses/cps006/current 1965 http://www.cs.duke.edu/csed/tapestry z To some programming is an art, to others a science, to others an engineering discipline A Computer Science Tapestry 1.1 A Computer Science Tapestry 1.2 What is Computer Science? Computer Science What is it that distinguishes it from the z Artificial Intelligence thinking machines separate subjects with which it is related? z Scientific Computing weather, cars, heart, modelling What is the linking thread which gathers these z Theoretical CS analyze algorithms, models disparate branches into a single discipline? My answer to these questions is simple --- it is z Computational Geometry theory of animation, 3-D models the art of programming a computer. It is the art z Architecture hardware-software interface of designing efficient and elegant methods of z Software Engineering engineering, science getting a computer to solve problems, z Operating Systems the soul of the machine theoretical or practical, small or large, simple z Graphics from Windows to Hollywood or complex. z Many other subdisciplines C.A.R. (Tony)Hoare A Computer Science Tapestry 1.3 A Computer Science Tapestry 1.4 Stories Algorithms as Cornerstone of CS z Who is Shawn Fanning and what did he do (19 years old)? z Step-by-step process that solves a problem ¾ more precise than a recipe z Who is Marc Andreessen and what did he do (21 years old)? ¾ eventually stops with an answer ¾ general process rather than specific to a computer or to a z Who is Claude Shannon and what did he do (21 years old)? programming language z Searching: for phone number of G. Samsa, whose number is 929-9338, or for the person whose number is 489-6569 z Who is Linus Torvalds and what did he do (21 years old)? ¾ Are these searches different? z If the phone book has 8 million numbers in it (why are there z Who is Dmitry Sklyarov and what did he do (26 years old)? only 7.9 million phone numbers with area code 212?) ¾ How many queries to find phone number of G. Samsa? z Who is Tim Berners-Lee and what did he do (35 years old)? ¾ How many queries to find person with number 929-9338 ¾ What about IP addresses? z Who is Owen Astrachan and what did he do (44 years old)? A Computer Science Tapestry 1.5 A Computer Science Tapestry 1.6 Search, Efficiency, Complexity Sorting Experiment: why do we sort? z Think of a number between 1 and 1,000 z Groups of four people are given a bag containing strips of paper ¾ respond high, low, correct, how many guesses needed? ¾ on each piece of paper is an 8-15 letter English word ¾ create a sorted list of all the words in the bag z Look up a word in a dictionary ¾ there are 100 words in a bag ¾ Finding the page/word, how many words do you look at? z What issues arise in developing an algorithm for this sort? z Looking up a phone number in the Manhattan, NY directory ¾ ¾ How many names are examined? ¾ z Can you write a description of an algorithm for others to z How many times can 1,024 be cut in half? follow? ¾ ¾ 210 = 1,024, 220 = 1,048,576 Do you need a 1-800 support line for your algorithm? ¾ Are you confident your algorithm works? A Computer Science Tapestry 1.7 A Computer Science Tapestry 1.8 Themes and Concepts of CS Theory, Language, Architecture z Theory z We can prove that in the worst case quicksort is bad ¾ properties of algorithms, how fast, how much memory ¾ doesn’t matter what machine it’s executed on ¾ average case, worst case: sorting cards, words, exams ¾ doesn’t matter what language it’s coded in ¾ ¾ provable properties, in a mathematical sense unlikely in practice, but worst case always possible z Solutions? Develop an algorithm that works as fast as z Language quicksort in the average case, but has good worst case ¾ programming languages: C++, Java, C, Perl, Fortran, Lisp, performance Scheme, Visual BASIC,more? ¾ quicksort invented in 1960 ¾ Assembly language, machine language, ¾ introsort (for introspective sort) invented in 1996 ¾ Natural language such as English z Sometimes live with worst case being bad z Architecture ¾ bad for sorting isn’t bad for other algorithms, needs to be ¾ Main memory, cache memory, disk, USB, SCSI, ... quantified using notation studied as part of the theory of algorithms ¾ pipeline, multi-processor A Computer Science Tapestry 1.9 A Computer Science Tapestry 1.10 Abstraction, Complexity, Models Alan Turing (1912--1954) z What is an integer? z Instrumental in breaking codes during WW II ¾ In mathematics we can define integers easily, infinite set of numbers and operations on the numbers (e.g.,+, -, *, /) z Developed mathematical model of a computer called a Turing {…-3, -2, -1, 0, 1, 2, 3, …} Machine (before computers) ¾ In programming, finite memory of computer imposes a ¾ solves same problems as a limit on the magnitude of integers. Pentium III (more slowly) • Possible to program with effectively infinite integers (as z Church-Turing thesis large as computation and memory permit) at the expense of ¾ All “computers” can solve the efficiency same problems • At some point addition is implemented with hardware, but z Showed there are problems that that’s not a concern to those writing software (or is it?) cannot be solved by a computer • C++ doesn’t require specific size for integers, Java does z Both a hero and a scientist/ z Floating-point numbers have an IEEE standard, required mathematician, but lived in an era because it’s more expensive to do arithmetic with 3.14159 than hard for gay people with 2 A Computer Science Tapestry 1.11 A Computer Science Tapestry 1.12 Complexity: What’s hard, what’s easy? C.A.R. (Tony) Hoare (b. 1934) z What is a prime number? z 671998030559713968361666935767 z Won Turing award in 1980 is not prime, I can prove it but I ¾ 2, 3, 5, 7, 11, 13, … z Invented quicksort, but didn’t can’t give you the factors. ¾ Largest prime? see how simple it was to program recursively z Finding factors is “hard”, z 48112959837082048697 z Developed mechanism and determining primality is “easy” z 671998030559713968361666935769 theory for concurrent ¾ What does this mean? processing z How do we determine if these numbers are prime? ¾ Why do we care? z In Turing Award speech used “Emporer’s New Clothes” as ¾ Test 3, 5, 7, … metaphor for current fads in z Encryption depends on this ¾ If we can test one million programming numbers a second, how relationship, without encryption long to check a 100 digit #? and secure web transactions where would we be? “Beginning students don’t know how to do top-down design z Why do we care? because they don’t know which end is up” A Computer Science Tapestry 1.13 A Computer Science Tapestry 1.14 Creating a Program From High- to Low-level languages z Specify the problem z C++ is a multi-purpose language ¾ remove ambiguities ¾ Scheme - functional language ¾ identify constraints ¾ Java, Smalltalk- everything is object oriented z Develop algorithms, design z Compilers translate C++ to a machine-specific executable classes, design software architecture program z Implement program ¾ The compiler is a program, input is C++, output is an ¾ revisit design executable ¾ test, code, debug ¾ What language is the compiler written in? ¾ revisit design ¾ In theory C++ source code works on any machine given a z Documentation, testing, compiler for the machine maintenance of program z C++ and other programming language are more syntactically rigid than English and other natural languages z From ideas to electrons A Computer Science Tapestry 1.15 A Computer Science Tapestry 1.16 Levels of Programming Language Alternatives to compilation z Machine specific assembly language, Sparc on left, Pentium z Some languages are interpreted, Scheme and Java are examples on right, both generated from the same C++ ¾ like simultaneous translation instead of translation of written document. The same word may be translated many main: main: times save %sp,-128,%sp pushl %ebp ¾ The interpreter is a program that translates one part of a mov 7,%o0 movl %esp,%ebp source code at a time st %o0,[%fp-20] subl $12,%esp mov 12,%o0 movl $7,-4(%ebp) • The interpreter is machine specific, written in some st %o0,[%fp-24] movl $12,-8(%ebp) programming language ld [%fp-20],%o0 movl -4(%ebp),%eax z JVM, the Java Virtual Machine ld [%fp-24],%o1 imull -8(%ebp),%eax ¾ Like a PC or Mac but machine is virtual, written in software call .umul,0 movl %eax,-12(%ebp) ¾ nop xorl %eax,%eax Executes Java byte codes which are created from Java source st %o0,[%fp-28] jmp .L1 • Like assembly language: between source code and executable mov 0,%i0 .align 4 ¾ JVM must be written for each architecture, e.g., Linux, b .LL1 xorl %eax,%eax Windows, Mac, BeOS, ... nop jmp .L1 A Computer Science Tapestry 1.17 A Computer Science Tapestry 1.18 What is a computer? Why is programming fun? z Turing machine: invented by Alan Turing in 1936 as a Mainframe, PC,laptop, What delights may its practitioner expect as a reward? theoretical model supercomputer First is the sheer joy of making things Second is the pleasure of making things that are useful infinite tape, moving tape-reader 0 1 Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts Fourth is the joy of always learning A computer is a computer, is a computer, Church-Turing Finally, there is the delight of working in such a tractable medium.
Recommended publications
  • A New Golden Age for Computer Architecture: Domain-Specific
    A New Golden Age for Computer Architecture: Domain-Specific Hardware/Software Co-Design, Enhanced Security, Open Instruction Sets, and Agile Chip Development John Hennessy and David Patterson Stanford and UC Berkeley 13 June 2018 https://www.youtube.com/watch?v=3LVeEjsn8Ts 1 Outline Part I: History of Part II: Current Architecture - Architecture Challenges - Mainframes, Ending of Dennard Scaling Minicomputers, and Moore’s Law, Security Microprocessors, RISC vs CISC, VLIW Part III: Future Architecture Opportunities - Domain Specific Languages and Architecture, Open Architectures, Agile Hardware Development 2 IBM Compatibility Problem in Early 1960s By early 1960’s, IBM had 4 incompatible lines of computers! 701 ➡ 7094 650 ➡ 7074 702 ➡ 7080 1401 ➡ 7010 Each system had its own: ▪ Instruction set architecture (ISA) ▪ I/O system and Secondary Storage: magnetic tapes, drums and disks ▪ Assemblers, compilers, libraries,... ▪ Market niche: business, scientific, real time, ... IBM System/360 – one ISA to rule them all 3 Control versus Datapath ▪ Processor designs split between datapath, where numbers are stored and arithmetic operations computed, and control, which sequences operations on datapath ▪ Biggest challenge for computer designers was getting control correct Control Instruction Control Lines Condition?▪ Maurice Wilkes invented the idea of microprogramming to design the control unit of a PC processor* Datapath Registers Inst. Reg. ▪ Logic expensive vs. ROM or RAM ALU Busy? Address Data ▪ ROM cheaper than RAM Main Memory ▪ ROM much faster
    [Show full text]
  • Reading List
    EECS 101 Introduction to Computer Science Dinda, Spring, 2009 An Introduction to Computer Science For Everyone Reading List Note: You do not need to read or buy all of these. The syllabus and/or class web page describes the required readings and what books to buy. For readings that are not in the required books, I will either provide pointers to web documents or hand out copies in class. Books David Harel, Computers Ltd: What They Really Can’t Do, Oxford University Press, 2003. Fred Brooks, The Mythical Man-month: Essays on Software Engineering, 20th Anniversary Edition, Addison-Wesley, 1995. Joel Spolsky, Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity, APress, 2004. Most content is available for free from Spolsky’s Blog (see http://www.joelonsoftware.com) Paul Graham, Hackers and Painters, O’Reilly, 2004. See also Graham’s site: http://www.paulgraham.com/ Martin Davis, The Universal Computer: The Road from Leibniz to Turing, W.W. Norton and Company, 2000. Ted Nelson, Computer Lib/Dream Machines, 1974. This book is now very rare and very expensive, which is sad given how visionary it was. Simon Singh, The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography, Anchor, 2000. Douglas Hofstadter, Goedel, Escher, Bach: The Eternal Golden Braid, 20th Anniversary Edition, Basic Books, 1999. Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, 2nd Edition, Prentice Hall, 2003.
    [Show full text]
  • ESD.33 -- Systems Engineering Session #1 Course Introduction
    ESD.33 -- Systems Engineering Session #4 Axiomatic Design Decision-Based Design Summary of Frameworks Phase Dan Frey Follow-up on Session #3 • Mike Fedor - Your lectures and readings about Lean Thinking have motivated me to re-read "The Goal" by Eliyahu M. Goldratt • Don Clausing – Remember that although set-based design seems to explain part of Toyota’s system, it also includes a suite of other powerful tools (QFD, Robust Design) • Denny Mahoney – What assumptions are you making about Ops Mgmt? Plan for the Session • Why are we doing this session? • Axiomatic Design (Suh) • Decision-Based Design (Hazelrigg) • What is rationality? • Overview of frameworks • Discussion of Exam #1 / Next steps Claims Made by Nam Suh • “A general theory for system design is presented” • “The theory is applicable to … large systems, software systems, organizations…” • “The flow diagram … can be used for many different tasks: design, construction, operation, modification, … maintenance … diagnosis …, and for archival documentation.” • “Design axioms were found to improve all designs without exceptions or counter-examples… When counter-examples or exceptions are proposed, the author always found flaws in the arguments.” Claims Made by Hazelrigg • “We present here … axioms and … theorems that underlie the mathematics of design” • “substantially different from … conventional … eng design” • “imposes severe conditions on upon design methodologies” • “all other measures are wrong” • “apply to … all fields of engineering … all products, processes, and services,
    [Show full text]
  • Compsci 6 Programming Design and Analysis
    CompSci 6 Programming Design and Analysis Robert C. Duvall http://www.cs.duke.edu/courses/cps006/fall04 http://www.cs.duke.edu/~rcd CompSci 6 : Spring 2005 1.1 What is Computer Science? Computer science is no more about computers than astronomy is about telescopes. Edsger Dijkstra Computer science is not as old as physics; it lags by a couple of hundred years. However, this does not mean that there is significantly less on the computer scientist's plate than on the physicist's: younger it may be, but it has had a far more intense upbringing! Richard Feynman http://www.wordiq.com CompSci 6 : Spring 2005 1.2 Scientists and Engineers Scientists build to learn, engineers learn to build – Fred Brooks CompSci 6 : Spring 2005 1.3 Computer Science and Programming Computer Science is more than programming The discipline is called informatics in many countries Elements of both science and engineering Elements of mathematics, physics, cognitive science, music, art, and many other fields Computer Science is a young discipline Fiftieth anniversary in 1997, but closer to forty years of research and development First graduate program at CMU (then Carnegie Tech) in 1965 To some programming is an art, to others a science, to others an engineering discipline CompSci 6 : Spring 2005 1.4 What is Computer Science? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline? My answer to these questions is simple --- it is the art of programming a computer.
    [Show full text]
  • The Computer Scientist As Toolsmith—Studies in Interactive Computer Graphics
    Frederick P. Brooks, Jr. Fred Brooks is the first recipient of the ACM Allen Newell Award—an honor to be presented annually to an individual whose career contributions have bridged computer science and other disciplines. Brooks was honored for a breadth of career contributions within computer science and engineering and his interdisciplinary contributions to visualization methods for biochemistry. Here, we present his acceptance lecture delivered at SIGGRAPH 94. The Computer Scientist Toolsmithas II t is a special honor to receive an award computer science. Another view of computer science named for Allen Newell. Allen was one of sees it as a discipline focused on problem-solving sys- the fathers of computer science. He was tems, and in this view computer graphics is very near especially important as a visionary and a the center of the discipline. leader in developing artificial intelligence (AI) as a subdiscipline, and in enunciating A Discipline Misnamed a vision for it. When our discipline was newborn, there was the What a man is is more important than what he usual perplexity as to its proper name. We at Chapel Idoes professionally, however, and it is Allen’s hum- Hill, following, I believe, Allen Newell and Herb ble, honorable, and self-giving character that makes it Simon, settled on “computer science” as our depart- a double honor to be a Newell awardee. I am pro- ment’s name. Now, with the benefit of three decades’ foundly grateful to the awards committee. hindsight, I believe that to have been a mistake. If we Rather than talking about one particular research understand why, we will better understand our craft.
    [Show full text]
  • Computer Science and Global Economic Development: Sounds Interesting, but Is It Computer Science?
    Computer Science and Global Economic Development: Sounds Interesting, but is it Computer Science? Tapan S. Parikh UC Berkeley School of Information Berkeley, CA, USA [email protected] OVERVIEW interventions from the bottom up, usually applying experi- Computer scientists have a long history of developing tools mental methods [1]. This includes prominent use of ICTs, useful for advancing knowledge and practice in other disci- both as the focus of new interventions (mobile phones for plines. More than fifty years ago, Grace Hopper said the making markets more efficient [6], digital cameras to moni- role of computers was “freeing mathematicians to do math- tor teacher attendance [2]), and as tools for understanding ematics.” [5] Fred Brooks referred to a computer scientist as their impact (PDAs and smartphones to conduct extensive a toolsmith, , making “things that do not themselves satisfy in-field surveys [8]). It is a wonderfully timely moment for human needs, but which others use in making things that computer scientists to engage with the state-of-the-art in enrich human living.” [4]. Computational biologists have ap- development research and practice. plied algorithmic techniques to process and understand the deluge of data made possible by recent advances in molecu- lar biology. WHY ACADEMIA? WHY CS? The proper way to approach this kind of research has never been clear within Computer Science. The refrain“Sounds Why do this work in academia, and within the disci- interesting, but is it Computer Science?” is frequently heard. pline of Computer Science? There are several motivations. In this paper I argue that it is crucial take an expansive Academia allows us to be more free, and take greater risks, view of what Computer Science is.
    [Show full text]
  • Systems Development Life Cycle
    Systems Development Life Cycle From Wikipedia, the free encyclopedia Jump to: navigation, search For other uses, see SDLC (disambiguation). Model of the Systems Development Life Cycle with the Maintenance bubble highlighted. The Systems Development Life Cycle (SDLC), or Software Development Life Cycle in systems engineering, information systems and software engineering, is the process of creating or altering systems, and the models and methodologies that people use to develop these systems. The concept generally refers to computer or information systems. In software engineering the SDLC concept underpins many kinds of software development methodologies. These methodologies form the framework for planning and controlling the creation of an information system[1]: the software development process. Contents y 1 Overview y 2 History y 3 Systems development phases o 3.1 Requirements gathering and analysis o 3.2 Design o 3.3 Build or coding o 3.4 Testing o 3.5 Operations and maintenance y 4 Systems development life cycle topics o 4.1 Management and control o 4.2 Work breakdown structured organization o 4.3 Baselines in the SDLC o 4.4 Complementary to SDLC y 5 Strengths and weaknesses y 6 See also y 7 References y 8 Further reading y 9 External links [edit] Overview Systems and Development Life Cycle (SDLC) is a process used by a systems analyst to develop an information system, including requirements, validation, training, and user (stakeholder) ownership. Any SDLC should result in a high quality system that meets or exceeds customer expectations, reaches completion within time and cost estimates, works effectively and efficiently in the current and planned Information Technology infrastructure, and is inexpensive to maintain and cost-effective to enhance.[2] Computer systems are complex and often (especially with the recent rise of Service-Oriented Architecture) link multiple traditional systems potentially supplied by different software vendors.
    [Show full text]
  • Teaching How to Engineer Software Teaching How To
    CSEE&T-03 Madrid, Spain, 20 March 2003 Teaching how to engineer software CSEE&T-03 Keynote Dieter Rombach University of Kaiserslautern Computer Fraunhofer Institute Science Department for Experimental Software Software Engineering Chair Engineering (IESE) Kaiserslautern, Germany Kaiserslautern, Germany Slide 0 CSEE&T-03 Madrid, Spain, 20 March 2003 Focus & Message • Teaching the engineering of software requires –Communicating existing proven best practices as a basis –Concentration on first-order principles –Practice and experience of benefits –Analysis before construction Slide 1 1 CSEE&T-03 Madrid, Spain, 20 March 2003 Contents • (Software) Engineering • Practice of software engineering • Today’s typical teaching curricula • Some (innovative?) Ideas for adequate teaching • Proven Best Practices • (Graduate) SE Curriculum at Kaiserslautern • Summary & Outlook Slide 2 CSEE&T-03 Madrid, Spain, 20 March 2003 (Software) Engineering (Expectations) • Engineering requires the ability to – Choose an appropriate approach to solve a given problem à No optimal solution exists! – Assure adherence to best (proven) practices (engineering principles) à Ignorance violates due diligence! – Apply the approach in a predictable way à Can customize to goals & characteristics! – Repeat results à Continuous success & improvement! – Guarantee success before regular use à Works first time! – etc. Slide 3 2 CSEE&T-03 Madrid, Spain, 20 March 2003 (Software) Engineering (Special Characteristics) • Software Engineering –Focuses on development (non- deterministic
    [Show full text]
  • Arxiv:2106.11534V1 [Cs.DL] 22 Jun 2021 2 Nanjing University of Science and Technology, Nanjing, China 3 University of Southampton, Southampton, U.K
    Noname manuscript No. (will be inserted by the editor) Turing Award elites revisited: patterns of productivity, collaboration, authorship and impact Yinyu Jin1 · Sha Yuan1∗ · Zhou Shao2, 4 · Wendy Hall3 · Jie Tang4 Received: date / Accepted: date Abstract The Turing Award is recognized as the most influential and presti- gious award in the field of computer science(CS). With the rise of the science of science (SciSci), a large amount of bibliographic data has been analyzed in an attempt to understand the hidden mechanism of scientific evolution. These include the analysis of the Nobel Prize, including physics, chemistry, medicine, etc. In this article, we extract and analyze the data of 72 Turing Award lau- reates from the complete bibliographic data, fill the gap in the lack of Turing Award analysis, and discover the development characteristics of computer sci- ence as an independent discipline. First, we show most Turing Award laureates have long-term and high-quality educational backgrounds, and more than 61% of them have a degree in mathematics, which indicates that mathematics has played a significant role in the development of computer science. Secondly, the data shows that not all scholars have high productivity and high h-index; that is, the number of publications and h-index is not the leading indicator for evaluating the Turing Award. Third, the average age of awardees has increased from 40 to around 70 in recent years. This may be because new breakthroughs take longer, and some new technologies need time to prove their influence. Besides, we have also found that in the past ten years, international collabo- ration has experienced explosive growth, showing a new paradigm in the form of collaboration.
    [Show full text]
  • History of Computer Science
    HISTORY OF COMPUTER SCIENCE Gordana Dodig - Crnkovic, e-mail: [email protected] 1 A group of students at the Department of Electrical Engineering University of Pennsylvania have designed "ENIAC(TM)-on-a-Chip", under supervision of Professor J. Van der Spiegel, in collaboration with Dr. F. Ketterer. This was done as part of Eniac's 50th Anniversary Celebration. They have integrated the whole "ENIAC" on a 7.44 by 5.29 sq. mm chip using a 0.5 micrometer CMOS technology. 2 Table of Contents INTRODUCTION: MILESTONES IN THE DEVELOPMENT OF COMPUTERS ...............4 Before 1900: First Computing Devices ..................................................................................4 1900 – 1939 The Rise of Mathematics...................................................................................6 1940's: First Electronic Digital Computer..............................................................................6 1950's......................................................................................................................................7 1960's......................................................................................................................................7 1970's......................................................................................................................................8 1980's......................................................................................................................................8 1990's and Beyond..................................................................................................................9
    [Show full text]
  • Thinking Object Oriented
    Chapter 1 Thinking Ob ject Oriented Ob ject-oriented programming has b ecome exceedingly p opular in the past few years. Soft- ware pro ducers rush to release ob ject-oriented versions of their pro ducts. Countless b o oks and sp ecial issues of academic and trade journals have app eared on the sub ject. Students strive to b e able somehow to list \exp erience in ob ject-oriented programming" on their re- sumes. To judge from this frantic activity, ob ject-oriented programming is b eing greeted with an even greater p opularity than wehave seen in the past heralding earlier revolutionary ideas, such as \structured programming" or \exp ert systems". My intent in this rst chapter is to investigate and explain the basic principles of ob ject oriented programming, and in doing so to illustrate the following two prop ositions: OOP is a revolutionary idea, totally unlikeanything that has come b efore in program- ming. OOP is an evolutionary step, following naturally on the heels of earlier programming abstractions. 1.1 Why is Ob ject-Oriented Programming Popular? To judge from much of the p opular press, the following represent a few of the p ossible reasons why Ob ject-oriented programming has, in the past decade, b ecome so p opular: The hop e that it will quickly and easily lead to increased pro ductivity and improved reliability help solve the software crises. The desire for an easy transition from existing languages. The resonant similarity to techniques of thinking ab out problems in other domains.
    [Show full text]
  • Newport News Shipbuilding Company Interview Re Ship Design Process November 20, 1995
    Newport News Shipbuilding Company Interview re Ship Design Process November 20, 1995 TR96-002 January 1995 Fred Brooks with Kenton Meland's and Dinesh Manocha's corrections Department of Computer Science CB #3175, Sitterson Hall UNC-Chapel Hill Chapel Hill, NC 27599-3175 This work was supported by ARPA Contract No. DABT63-93-C-0048 UNC is an Equal Opportunity/Affirmative Action Institution. Newport News Shipbuilding Company Interview re Ship Design Process, November 20, 1995 Fred Brooks, with Kenton Meland's and Dinesh Manocha's corrections 1. Highlights and Surprises(*) 1.1. *Design is mostly architectural, not mechanical. It consists mostly of arrangement and connection of equipment. 1.2. The design process is top-down, consisting of preliminary design and naval architecture, contract design, gross equipment placement, and detailed design. 1.3. Several disciplines within design and planning- NNS believe it is important to have all disciplines in the same design/manufacturing system. • Naval architecture of whole vessel • Hull • Structure • Major equipment • Piping • Ventilation • Wireways and cables • Logistics and maintainability 1.4. Four types of detailed design tasks: • Specifying parts to be made from standard stock to custom dimensions • Selecting from a parts catalog, which for Double Eagle is 18,000 parts, some made by NNS, most purchased • Specifyiog parts to be made by parameterization of standard designs, mostly pipe • Arrangement of parts as to what goes where 1.5. Visualization can be useful at many stages in the process, e.g., hull design, computational fluid dynamics, and arrangement, but it is not necessarily what they need most. 1.6.
    [Show full text]