A Brief History of Software Patents (And Why They’Re Valid)
Total Page:16
File Type:pdf, Size:1020Kb

Load more
Recommended publications
-
COM 113 INTRO to COMPUTER PROGRAMMING Theory Book
1 [Type the document title] UNESCO -NIGERIA TECHNICAL & VOCATIONAL EDUCATION REVITALISATION PROJECT -PHASE II NATIONAL DIPLOMA IN COMPUTER TECHNOLOGY Computer Programming COURSE CODE: COM113 YEAR I - SE MESTER I THEORY Version 1: December 2008 2 [Type the document title] Table of Contents WEEK 1 Concept of programming ................................................................................................................ 6 Features of a good computer program ............................................................................................ 7 System Development Cycle ............................................................................................................ 9 WEEK 2 Concept of Algorithm ................................................................................................................... 11 Features of an Algorithm .............................................................................................................. 11 Methods of Representing Algorithm ............................................................................................ 11 Pseudo code .................................................................................................................................. 12 WEEK 3 English-like form .......................................................................................................................... 15 Flowchart ..................................................................................................................................... -
Retrocomputing As Preservation and Remix
Retrocomputing as Preservation and Remix Yuri Takhteyev Quinn DuPont University of Toronto University of Toronto [email protected] [email protected] Abstract This paper looks at the world of retrocomputing, a constellation of largely non-professional practices involving old computing technology. Retrocomputing includes many activities that can be seen as constituting “preservation.” At the same time, it is often transformative, producing assemblages that “remix” fragments from the past with newer elements or joining together historic components that were never combined before. While such “remix” may seem to undermine preservation, it allows for fragments of computing history to be reintegrated into a living, ongoing practice, contributing to preservation in a broader sense. The seemingly unorganized nature of retrocomputing assemblages also provides space for alternative “situated knowledges” and histories of computing, which can sometimes be quite sophisticated. Recognizing such alternative epistemologies paves the way for alternative approaches to preservation. Keywords: retrocomputing, software preservation, remix Recovering #popsource In late March of 2012 Jordan Mechner received a shipment from his father, a box full of old floppies. Among them was a 3.5 inch disk labelled: “Prince of Persia / Source Code (Apple) / ©1989 Jordan Mechner (Original).” Mechner’s announcement of this find on his blog the next day took the world of nerds by storm.1 Prince of Persia, a game that Mechner single-handedly developed in the late 1980s, revolutionized computer games when it came out due to its surprisingly realistic representation of human movement. After being ported to DOS and Apple’s Mac OS in the early 1990s the game sold 2 million copies (Pham, 2001). -
The Fuzzy Software Patent Debate Rages On
OPINION The Fuzzy Software Patent Debate Rages On By Heather J. Meeker LinuxInsider 02/23/05 5:00 AM PT Once upon a time, we intellectual property lawyers got to live peacefully in our ivory towers. Now it seems that intellectual property policy issues have become fraught with partisan rhetoric. Most open-source promoters are against software patents. Most corporate spokesmen side with patents, period, whether they cover software or not. But it is worth looking beyond the rhetoric. The European Commission recently tolled the death knell for the EU Software Patent Directive, or more precisely, the "Directive on the Patentability of Computer- Implemented Inventions." Like most Americans, I am fairly clueless about the EU political process, and I wouldn't presume to write about exactly how it was killed. But the decision may have been swayed by an eleventh-hour public relations pitch against the directive by open-source spokesmen from the United States. On that aspect, I will add my two cents. A delegation of open-source leaders, led by Linus Torvalds, published an "Appeal" at softwarepatents.com, calling software patents "dangerous to the economy at large, and particularly to the European economy." Look Beyond the Rhetoric Leaders of the open-source software movement have long been harsh critics of software patents. The GPL [license] itself says, "any free program is threatened constantly by software patents." The appeal contends that copyright provides adequate protection for the creations of software authors. The Appeal advocated reliance on copyright law, rather than patent law, for the protection of software. Not long afterward, in late January, the European Parliament's Legal Affairs Committee recommended scrapping the pending directive, extending the debate until at least the end From www.linuxinsider.com/story/40676.html 1 April 2011 of the year. -
Defining Computer Program Parts Under Learned Hand's Abstractions Test in Software Copyright Infringement Cases
Michigan Law Review Volume 91 Issue 3 1992 Defining Computer Program Parts Under Learned Hand's Abstractions Test in Software Copyright Infringement Cases John W.L. Ogilive University of Michigan Law School Follow this and additional works at: https://repository.law.umich.edu/mlr Part of the Computer Law Commons, Intellectual Property Law Commons, and the Judges Commons Recommended Citation John W. Ogilive, Defining Computer Program Parts Under Learned Hand's Abstractions Test in Software Copyright Infringement Cases, 91 MICH. L. REV. 526 (1992). Available at: https://repository.law.umich.edu/mlr/vol91/iss3/5 This Note is brought to you for free and open access by the Michigan Law Review at University of Michigan Law School Scholarship Repository. It has been accepted for inclusion in Michigan Law Review by an authorized editor of University of Michigan Law School Scholarship Repository. For more information, please contact [email protected]. NOTE Defining Computer Program Parts Under Learned Hand's Abstractions Test in Software Copyright Infringement Cases John W.L. Ogilvie INTRODUCTION Although computer programs enjoy copyright protection as pro tectable "literary works" under the federal copyright statute, 1 the case law governing software infringement is confused, inconsistent, and even unintelligible to those who must interpret it.2 A computer pro gram is often viewed as a collection of different parts, just as a book or play is seen as an amalgamation of plot, characters, and other familiar parts. However, different courts recognize vastly different computer program parts for copyright infringement purposes. 3 Much of the dis array in software copyright law stems from mutually incompatible and conclusory program part definitions that bear no relation to how a computer program is actually designed and created. -
Language Translators
Student Notes Theory LANGUAGE TRANSLATORS A. HIGH AND LOW LEVEL LANGUAGES Programming languages Low – Level Languages High-Level Languages Example: Assembly Language Example: Pascal, Basic, Java Characteristics of LOW Level Languages: They are machine oriented : an assembly language program written for one machine will not work on any other type of machine unless they happen to use the same processor chip. Each assembly language statement generally translates into one machine code instruction, therefore the program becomes long and time-consuming to create. Example: 10100101 01110001 LDA &71 01101001 00000001 ADD #&01 10000101 01110001 STA &71 Characteristics of HIGH Level Languages: They are not machine oriented: in theory they are portable , meaning that a program written for one machine will run on any other machine for which the appropriate compiler or interpreter is available. They are problem oriented: most high level languages have structures and facilities appropriate to a particular use or type of problem. For example, FORTRAN was developed for use in solving mathematical problems. Some languages, such as PASCAL were developed as general-purpose languages. Statements in high-level languages usually resemble English sentences or mathematical expressions and these languages tend to be easier to learn and understand than assembly language. Each statement in a high level language will be translated into several machine code instructions. Example: number:= number + 1; 10100101 01110001 01101001 00000001 10000101 01110001 B. GENERATIONS OF PROGRAMMING LANGUAGES 4th generation 4GLs 3rd generation High Level Languages 2nd generation Low-level Languages 1st generation Machine Code Page 1 of 5 K Aquilina Student Notes Theory 1. MACHINE LANGUAGE – 1ST GENERATION In the early days of computer programming all programs had to be written in machine code. -
The Past, Present, and Future of Software Evolution
The Past, Present, and Future of Software Evolution Michael W. Godfrey Daniel M. German Software Architecture Group (SWAG) Software Engineering Group School of Computer Science Department of Computer Science University of Waterloo, CANADA University of Victoria, CANADA email: [email protected] email: [email protected] Abstract How does our system compare to that of our competitors? How easy would it be to port to MacOS? Are users still Change is an essential characteristic of software devel- angry about the spyware incident? As new features are de- opment, as software systems must respond to evolving re- vised and deployed, as new runtime platforms are envis- quirements, platforms, and other environmental pressures. aged, as new constraints on quality attributes are requested, In this paper, we discuss the concept of software evolu- so must software systems continually be adapted to their tion from several perspectives. We examine how it relates changing environment. to and differs from software maintenance. We discuss in- This paper explores the notion of software evolution. We sights about software evolution arising from Lehman’s laws start by comparing software evolution to the related idea of software evolution and the staged lifecycle model of Ben- of software maintenance and briefly explore the history of nett and Rajlich. We compare software evolution to other both terms. We discuss two well known research results of kinds of evolution, from science and social sciences, and we software evolution: Lehman’s laws of software evolution examine the forces that shape change. Finally, we discuss and the staged lifecycle model of Bennett and Rajlich. We the changing nature of software in general as it relates to also relate software evolution to biological evolution, and evolution, and we propose open challenges and future di- discuss their commonalities and differences. -
13. Stored-Program Computers
13. Stored-Program Computers 13.1 Introduction This chapter concentrates on the low-level usage and structure of stored program computers. We focus on a particular hypothetical machine known as the ISC, describing its programming in assembly language. We show how recursion and switch statements are compiled into machine language, and how memory-mapped overlapped I/O is achieved. We also show the logic implement of the ISC, in terms of registers, buses, and finite-state machine controllers. 13.2 Programmer's Abstraction for a Stored-Program Computer By stored-program computer, we mean a machine in which the program, as well as the data, are stored in memory, each word of which can be accessed in uniform time. Most of the high-level language programming the reader has done will likely have used this kind of computer implicitly. However, the program that is stored is not high-level language text. If it were, then it would be necessary to constantly parse this text, which would slow down execution immensely. Instead one of two other forms of storage is used: An abstract syntax representation of the program could be stored. The identifiers in this representation are pre-translated, and the structure is traversed dynamically as needed during execution. This is the approach used by an interpreter for the language. A second approach is to use a compiler for the language. The compiler translates the program into the very low-level language native to the machine, appropriately called machine language. The native machine language acts as a least-common-denominator language for the computer. -
A Brief History of Software Engineering Niklaus Wirth ([email protected]) (25.2.2008)
1 A Brief History of Software Engineering Niklaus Wirth ([email protected]) (25.2.2008) Abstract We present a personal perspective of the Art of Programming. We start with its state around 1960 and follow its development to the present day. The term Software Engineering became known after a conference in 1968, when the difficulties and pitfalls of designing complex systems were frankly discussed. A search for solutions began. It concentrated on better methodologies and tools. The most prominent were programming languages reflecting the procedural, modular, and then object-oriented styles. Software engineering is intimately tied to their emergence and improvement. Also of significance were efforts of systematizing, even automating program documentation and testing. Ultimately, analytic verification and correctness proofs were supposed to replace testing. More recently, the rapid growth of computing power made it possible to apply computing to ever more complicated tasks. This trend dramatically increased the demands on software engineers. Programs and systems became complex and almost impossible to fully understand. The sinking cost and the abundance of computing resources inevitably reduced the care for good design. Quality seemed extravagant, a loser in the race for profit. But we should be concerned about the resulting deterioration in quality. Our limitations are no longer given by slow hardware, but by our own intellectual capability. From experience we know that most programs could be significantly improved, made more reliable, economical and comfortable to use. The 1960s and the Origin of Software Engineering It is unfortunate that people dealing with computers often have little interest in the history of their subject. -
Programming Fundamentals - I Basic Concepts Fall-Semester 2016
Programming Fundamentals - I Basic Concepts Fall-Semester 2016 Prepared By: Rao Muhammad Umer Lecturer, Web: raoumer.github.io Department of Computer Science & IT, The University of Lahore. What is computer? The term "computer" was originally given to humans who performed numerical calculations using mechanical calculators, such as the abacus and slide rule. The term was later given to a mechanical device as they began replacing the human computers. Today's computers are electronic devices that accept data such as numbers, text, sound, image, animations, video, etc., (input), process that data (converts data to information) , produce output, and then store (storage) the results. A basic computer consists of 4 components: 1. Input devices 2. Central Processing Unit or CPU 3. Output devices 4. Memory Input Devices are used to provide input to the computer basic input devices include keyboard, mouse, touch screens etc. Central Processing Unit acts like a brain, it processes all instructions and data in the computer, the instructions are computer commands, these commands are given to CPU by input devices, some of the instructions are generated by the computer itself Output devices are used to receive computer output, the output, some basic output devices are hard drive disk (HDD, commonly known as hard disk), printers, computer screens (Monitors and LCDs) The computer memory is a temporary storage area. It holds the data and instructions that the Central Processing Unit (CPU) needs. Before a program can be run, the program is loaded from some storage device such as into the memory, the CPU loads the program or part of the program from the memory and executes it. -
Introduction to Computer Programming
Introduction to Computer Programming CISC1600/1610 Computer Science I/Lab Spring 2016 CISC1600 Yanjun Li 1 Outline This Course Computer Programming Spring 2016 CISC1600 Yanjun Li 2 1 This is a course In Programming For beginners who want to become professionals or who would like to know something about programming who are assumed to be bright Though not (necessarily) geniuses who are willing to work hard Though do need sleep occasionally, and take a normal course load Using the C++ programming language Spring 2016 CISC1600 Yanjun Li 3 Learning Goals Learn Fundamental programming concepts Key useful techniques Basic Standard C++ facilities After the course, you’ll be able to Write small sound C++ programs Read much larger programs Learn the basics of many other languages by yourself Proceed with an “advanced” C++ programming course After the course, you will not (yet) be An expert programmer A C++ language expert An expert user of advanced libraries Spring 2016 CISC1600 Yanjun Li 4 2 The Means Lectures Attend every one Outside of lectures Read a chapter ahead, and read the chapter again after each lecture Read actively: with questions in mind, try to reorganize/rephrase the key points in your mind Review questions/Terms in chapters Drills Always do the drills, before the exercises Exercises Spring 2016 CISC1600 Yanjun Li 5 The Means (Cont.) Lab projects That’s where the most fun and the best learning takes place Don’t wait until lab section to start the project Start to think about the project early Finish up & get help during labs Exams Midterms Final Spring 2016 CISC1600 Yanjun Li 6 3 How to be Successful? Don’t study alone when you don’t have to Form study groups Do help each other (without plagiarizing) If in doubt if a collaboration is legitimate: ask! Don’t claim to have written code that you copied from others Don’t give anyone else your code (to hand in for a grade) When you rely on the work of others, explicitly list all of your sources – i.e. -
Patenting Software Is Wrong
Case Western Reserve Law Review Volume 58 Issue 2 Article 7 2007 Manuscript: You Can't Patent Software: Patenting Software is Wrong Peter D. Junger Follow this and additional works at: https://scholarlycommons.law.case.edu/caselrev Part of the Law Commons Recommended Citation Peter D. Junger, Manuscript: You Can't Patent Software: Patenting Software is Wrong, 58 Case W. Rsrv. L. Rev. 333 (2007) Available at: https://scholarlycommons.law.case.edu/caselrev/vol58/iss2/7 This Tribute is brought to you for free and open access by the Student Journals at Case Western Reserve University School of Law Scholarly Commons. It has been accepted for inclusion in Case Western Reserve Law Review by an authorized administrator of Case Western Reserve University School of Law Scholarly Commons. MANUSCRIPT* YOU CAN'T PATENT SOFTWARE: PATENTING SOFTWARE IS WRONG PeterD. Jungert INTRODUCTION Until the invention of programmable' digital computers around the time of World War II, no one had imagined-and probably no one could have imagined-that methods of solving mathematical . Editor'sNote: This article is the final known manuscript of Professor PeterJunger. We present this piece to you as a tribute to Professor Junger and for your own enjoyment. This piece was not, at the time of ProfessorJunger 's passing, submitted to any Law Review or legal journal.Accordingly, Case Western Reserve University Law Review is publishing this piece as it was last edited by Professor Junger, with the following exceptions: we have formatted the document for printing, and corrected obvious typographical errors. Footnotes have been updated to the best of our ability, but without Professor Junger's input, you may find some errors. -
A Symposium for John Perry Barlow
DUKE LAW & TECHNOLOGY REVIEW Volume 18, Special Symposium Issue August 2019 Special Editor: James Boyle THE PAST AND FUTURE OF THE INTERNET: A Symposium for John Perry Barlow Duke University School of Law Duke Law and Technology Review Fall 2019–Spring 2020 Editor-in-Chief YOOJEONG JAYE HAN Managing Editor ROBERT HARTSMITH Chief Executive Editors MICHELLE JACKSON ELENA ‘ELLIE’ SCIALABBA Senior Research Editors JENNA MAZZELLA DALTON POWELL Special Projects Editor JOSEPH CAPUTO Technical Editor JEROME HUGHES Content Editors JOHN BALLETTA ROSHAN PATEL JACOB TAKA WALL ANN DU JASON WASSERMAN Staff Editors ARKADIY ‘DAVID’ ALOYTS ANDREW LINDSAY MOHAMED SATTI JONATHAN B. BASS LINDSAY MARTIN ANTHONY SEVERIN KEVIN CERGOL CHARLES MATULA LUCA TOMASI MICHAEL CHEN DANIEL MUNOZ EMILY TRIBULSKI YUNA CHOI TREVOR NICHOLS CHARLIE TRUSLOW TIM DILL ANDRES PACIUC JOHN W. TURANCHIK PERRY FELDMAN GERARDO PARRAGA MADELEINE WAMSLEY DENISE GO NEHAL PATEL SIQI WANG ZACHARY GRIFFIN MARQUIS J. PULLEN TITUS R. WILLIS CHARLES ‘CHASE’ HAMILTON ANDREA RODRIGUEZ BOUTROS ZIXUAN XIAO DAVID KIM ZAYNAB SALEM CARRIE YANG MAX KING SHAREEF M. SALFITY TOM YU SAMUEL LEWIS TIANYE ZHANG Journals Advisor Faculty Advisor Journals Coordinator JENNIFER BEHRENS JAMES BOYLE KRISTI KUMPOST TABLE OF CONTENTS Authors’ Biographies ................................................................................ i. John Perry Barlow Photograph ............................................................... vi. The Past and Future of the Internet: A Symposium for John Perry Barlow James Boyle