Program Synthesis for Empowering End Users and Stress-Testing Compilers

Total Page:16

File Type:pdf, Size:1020Kb

Program Synthesis for Empowering End Users and Stress-Testing Compilers Program Synthesis for Empowering End Users and Stress-Testing Compilers By VU MINH LE B.Eng. (University of Technology, Vietnam National University) 2006 M.Sc. (University of California, Davis) 2011 DISSERTATION Submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY in Computer Science in the OFFICE OF GRADUATE STUDIES of the UNIVERSITY OF CALIFORNIA DAVIS Approved: Zhendong Su, Chair Sumit Gulwani Premkumar Devanbu Committee in Charge 2015 -i- Copyright © 2015 by Vu Minh Le All rights reserved. Vu Minh Le September 2015 Computer Science Program Synthesis for Empowering End Users and Stress-Testing Compilers Abstract Since 2012, the number of people with access to computing devices has exploded. This trend is due to these devices’ falling prices, and their increased functionalities and programmability. Two challenges arise from this trend: (1) How to assist the increasing number of device owners, most of whom are non-programmers, yet hope to take full advantage of their devices, and (2) how to make critical software, which is relied upon by other software running on these devices, more reliable? Our vision is that program synthesis is the solution for the above arising challenges. This dissertation describes various program synthesis techniques to synthesize programs from natural languages, input/output examples, and existing programs to tackle these challenges. We present SmartSynth, a natural language interface that synthesizes smartphone programs from natural language descriptions. SmartSynth enables users to automate their repetitive tasks by leveraging various phone sensors. It is the first system that combines the advances in both natural language processing (NLP) and program synthesis: it uses NLP techniques to parse a given command, and applies program synthesis techniques to resolve parsing ambiguities. We have adapted and extended SmartSynth’s algorithms to integrate it into TouchDevelop, a popular touch-based programming environments for end users. We develop FlashExtract, a system that extracts data from semi-structured document (such as text files, webpages, and spreadsheets) using examples. Natural language does not work well in this domain because the tasks are complicated and users usually do not know how to perform them. In FlashExtract, users only need to highlight some sample regions to be extracted, the system will learn a program to select similar regions -ii- automatically. They can also provide nested examples to extract structured, hierarchical data. FlashExtract has been shipped as the cmdlet ConvertFrom-String of PowerShell in Microsoft Windows 10 and as the Custom Fields feature in Microsoft Azure Operational Insights. While it is important to make programming accessible to end users, it is also vital to improve the correctness of critical software because they impact other software products. We introduce Equivalence Modulo Inputs (EMI), a novel, general methodology to synthesize valid compiler test programs from existing test cases. Given a test program and a set of its inputs, we profile the program’s execution over the inputs. We then generate new test variants by randomly removing code that is unexecuted under the provided inputs. The expectation is that these new variants should behave exactly the same as the original program under the same inputs; any observed discrepancy indicates a compiler bug. Our technique is simple to realize yet very effective. In total, we have reported more than 400 bugs in GCC and LLVM, most of which have already been fixed. Many compiler vendors have adopted EMI to test their compilers. We also believe that cross-disciplinary solutions can increase the impact of program synthesis techniques. We therefore further explore program synthesis in the following three dimensions. First, we introduce two novel user interaction models to help users resolve ambiguities in programming-by-example systems like FlashExtract. One model allows users to effectively navigate among the large set of programs consistent with the provided examples. The other model uses active learning to ask questions to help differentiate the outputs of these programs. Second, we present a guided, advanced mutation strategy based on Bayesian optimization to synthesize EMI variants more effectively. Our improved technique supports both code deletions and insertions in the unexecuted regions, and uses Markov Chain Monte Carlo (MCMC) optimization to guide the synthesis process. Finally, we apply program synthesis to find bugs in a new domain: the link-time optimizer components in compilers. iii To Minhon and Koala. iv CONTENTS List of Figures . viii List of Tables . xii Acknowledgments . xiii 1 Introduction 1 2 SmartSynth: Synthesizing Smartphone Programs from Natural Language 11 2.1 Motivating Example . 14 2.2 Automation Script Language . 19 2.2.1 Language Features . 19 2.2.2 Essential Components . 21 2.3 Synthesis Algorithm . 23 2.3.1 Component Discovery . 23 2.3.2 Script Discovery . 26 2.3.3 SmartSynth . 32 2.4 Evaluation . 35 2.4.1 Setup . 35 2.4.2 Experimental Results . 36 2.4.3 Limitations . 40 3 FlashExtract: Synthesizing Data-Extraction Program from Examples 42 3.1 Motivating Examples . 44 3.2 User Interaction Model . 49 3.2.1 Output Schema . 49 3.2.2 Regions . 50 3.2.3 Schema Extraction Program . 51 3.2.4 Example-based User Interaction . 53 3.3 Inductive Synthesis Framework . 56 3.3.1 Data Extraction DSLs . 57 -v- 3.3.2 Core Algebra for Constructing Data Extraction DSLs . 58 3.3.3 Modular Synthesis Algorithms . 60 3.3.4 Correctness . 65 3.4 Instantiations . 67 3.4.1 Text Instantiation . 67 3.4.2 Webpage Instantiation . 70 3.4.3 Spreadsheet Instantiation . 72 3.5 Evaluation . 73 3.5.1 Setup . 74 3.5.2 Experimental Results . 75 4 EMI: Synthesizing Compiler Test Programs from Existing Programs 79 4.1 Illustrating Examples . 82 4.2 Equivalence Modulo Inputs . 87 4.2.1 Definition . 87 4.2.2 Differential Testing with EMI Variants . 88 4.3 Implementation of Orion ........................... 89 4.3.1 Extracting Coverage Information . 90 4.3.2 Generating EMI Variants . 92 4.4 Evaluation . 94 4.4.1 Testing Setup . 95 4.4.2 Quantitative Results . 98 4.4.3 Assorted Bug Samples Found by Orion ............... 101 4.4.4 Remarks . 104 5 Other Dimensions of Program Synthesis 107 5.1 New User Interaction Models: Program Navigation and Conversational . 107 5.1.1 FlashProg’s User Interface . 108 5.1.2 Illustrative Scenario . 110 5.1.3 Implementation . 113 vi 5.1.4 Evaluation . 117 5.2 New Techique: Guided Program Synthesis . 124 5.2.1 Illustrative Examples . 125 5.2.2 Background on Markov Chain Monte Carlo . 128 5.2.3 MCMC Bug Finding . 129 5.2.4 Implementation . 134 5.2.5 Evaluation . 137 5.3 New Domain: Stress-Testing Link-Time Optimizers . 145 5.3.1 Illustrative Examples . 145 5.3.2 Design and Realization . 149 5.3.3 Evaluation . 154 6 Related Work 160 6.1 Natural Language Understanding . 160 6.2 Program Synthesis . 162 6.3 Data Extraction . 164 6.4 Interactive User Interfaces . 166 6.5 Compiler Testing and Verification . 169 6.6 Markov Chain Monte Carlo Sampling . 172 7 Conclusion and Future Work 173 vii LIST OF FIGURES 2.1 SmartSynth’s system architecture. 13 2.2 A visual program for Example 1 written in AppInventor. 14 2.3 The graph showing all possible dataflow relations among components identified by the Component Discovery algorithms. 17 2.4 The script for Example 1. 18 2.5 The syntax of automation language. : x, i, r, and lrefer to a temporary variable, an argument of the script, a return value, and a literal, respec- tively. The essential components identified by the NLP techniques are underlined. 21 2.6 A region in the description that cannot be mapped to any component. SmartSynth reports its phrase to the user to clarify. 34 2.7 The result of mapping phrases to components under increasingly sophisti- cated configurations. 38 2.8 The number of dataflow relations detected by the rule-based algorithm for various tasks grouped by relation number. 39 2.9 The number of descriptions whose dataflow relations are entirely detected by the rule-based algorithm (total 487) vs. those that require completion by the completion algorithm (total 153), grouped by the number of relations. 40 3.1 Extracting data from a text file using FlashExtract............. 45 3.2 Extracting data from a Google Scholar webpage. 47 3.3 Extracting data from a semi-structured spreadsheet. 48 3.4 The language of schema for extracted data. 49 3.5 Semantics of Fill............................... 53 3.6 The syntax of Ltext, the DSL for extracting text files. 68 3.7 The syntax of Lweb, the DSL for extracting webpages. Definitions of p and rr are similar to those in Figure 3.6. 71 -viii- 3.8 The syntax of Lsps, the DSL for extracting spreadsheets. 72 3.9 Average number of examples (solid/white bars represent positive/nega- tive instances) across various fields for each document. 76 3.10 Average learning time of the last interaction across various fields for each document. 77 4.1 Orion transforms 4.1a to 4.1b and uncovers a miscompilation in Clang. 84 4.2 Reduced version of the code in Figure 4.1b for bug reporting. (http: //llvm.org/bugs/show_bug.cgi?id=14972)................ 85 4.3 GCC miscompiles this program to an infinite loop instead of immediately terminating with no output. (http://gcc.gnu.org/bugzilla/show_bug. cgi?id=58731)................................ 86 4.4 Affected versions of GCC and LLVM (lighter bars: confirmed bugs; darker bars: fixed bugs). 100 4.5 Affected optimization levels of GCC and LLVM (lighter bars: confirmed bugs; darker bars: fixed bugs). 101 4.6 Affected components of GCC and LLVM (lighter bars: confirmed bugs; darker bars: fixed bugs).
Recommended publications
  • CAS (Computer Algebra System) Mathematica
    CAS (Computer Algebra System) Mathematica- UML students can download a copy for free as part of the UML site license; see the course website for details From: Wikipedia 2/9/2014 A computer algebra system (CAS) is a software program that allows [one] to compute with mathematical expressions in a way which is similar to the traditional handwritten computations of the mathematicians and other scientists. The main ones are Axiom, Magma, Maple, Mathematica and Sage (the latter includes several computer algebras systems, such as Macsyma and SymPy). Computer algebra systems began to appear in the 1960s, and evolved out of two quite different sources—the requirements of theoretical physicists and research into artificial intelligence. A prime example for the first development was the pioneering work conducted by the later Nobel Prize laureate in physics Martin Veltman, who designed a program for symbolic mathematics, especially High Energy Physics, called Schoonschip (Dutch for "clean ship") in 1963. Using LISP as the programming basis, Carl Engelman created MATHLAB in 1964 at MITRE within an artificial intelligence research environment. Later MATHLAB was made available to users on PDP-6 and PDP-10 Systems running TOPS-10 or TENEX in universities. Today it can still be used on SIMH-Emulations of the PDP-10. MATHLAB ("mathematical laboratory") should not be confused with MATLAB ("matrix laboratory") which is a system for numerical computation built 15 years later at the University of New Mexico, accidentally named rather similarly. The first popular computer algebra systems were muMATH, Reduce, Derive (based on muMATH), and Macsyma; a popular copyleft version of Macsyma called Maxima is actively being maintained.
    [Show full text]
  • Ipad Educational Apps This List of Apps Was Compiled by the Following Individuals on Behalf of Innovative Educator Consulting: Naomi Harm Jenna Linskens Tim Nielsen
    iPad Educational Apps This list of apps was compiled by the following individuals on behalf of Innovative Educator Consulting: Naomi Harm Jenna Linskens Tim Nielsen INNOVATIVE 295 South Marina Drive Brownsville, MN 55919 Home: (507) 750-0506 Cell: (608) 386-2018 EDUCATOR Email: [email protected] Website: http://naomiharm.org CONSULTING Inspired Technology Leadership to Transform Teaching & Learning CONTENTS Art ............................................................................................................... 3 Creativity and Digital Production ................................................................. 5 eBook Applications .................................................................................... 13 Foreign Language ....................................................................................... 22 Music ........................................................................................................ 25 PE / Health ................................................................................................ 27 Special Needs ............................................................................................ 29 STEM - General .......................................................................................... 47 STEM - Science ........................................................................................... 48 STEM - Technology ..................................................................................... 51 STEM - Engineering ...................................................................................
    [Show full text]
  • SMT Solving in a Nutshell
    SAT and SMT Solving in a Nutshell Erika Abrah´ am´ RWTH Aachen University, Germany LuFG Theory of Hybrid Systems February 27, 2020 Erika Abrah´ am´ - SAT and SMT solving 1 / 16 What is this talk about? Satisfiability problem The satisfiability problem is the problem of deciding whether a logical formula is satisfiable. We focus on the automated solution of the satisfiability problem for first-order logic over arithmetic theories, especially using SAT and SMT solving. Erika Abrah´ am´ - SAT and SMT solving 2 / 16 CAS SAT SMT (propositional logic) (SAT modulo theories) Enumeration Computer algebra DP (resolution) systems [Davis, Putnam’60] DPLL (propagation) [Davis,Putnam,Logemann,Loveland’62] Decision procedures NP-completeness [Cook’71] for combined theories CAD Conflict-directed [Shostak’79] [Nelson, Oppen’79] backjumping Partial CAD Virtual CDCL [GRASP’97] [zChaff’04] DPLL(T) substitution Watched literals Equalities and uninterpreted Clause learning/forgetting functions Variable ordering heuristics Bit-vectors Restarts Array theory Arithmetic Decision procedures for first-order logic over arithmetic theories in mathematical logic 1940 Computer architecture development 1960 1970 1980 2000 2010 Erika Abrah´ am´ - SAT and SMT solving 3 / 16 SAT SMT (propositional logic) (SAT modulo theories) Enumeration DP (resolution) [Davis, Putnam’60] DPLL (propagation) [Davis,Putnam,Logemann,Loveland’62] Decision procedures NP-completeness [Cook’71] for combined theories Conflict-directed [Shostak’79] [Nelson, Oppen’79] backjumping CDCL [GRASP’97] [zChaff’04]
    [Show full text]
  • Mixing R with Other Languages JOHN D
    Mixing R with other languages JOHN D. COOK, PHD SINGULAR VALUE CONSULTING Why R? Libraries, libraries, libraries De facto standard for statistical research Nice language, as far as statistical languages go “Quirky, flawed, and an enormous success.” Why mix languages? Improve performance of R code Execution speed (e.g. loops) Memory management Raid R’s libraries How to optimize R Vectorize Rewrite not using R A few R quirks Everything is a vector Everything can be null or NA Unit-offset vectors Zero index legal but strange Negative indices remove elements Matrices filled by column by default $ acts like dot, dot not special C package interface Must manage low-level details of R object model and memory Requires Rtools on Windows Lots of macros like REALSXP, PROTECT, and UNPROTECT Use C++ (Rcpp) instead “I do not recommend using C for writing new high-performance code. Instead write C++ with Rcpp.” – Hadley Wickham Rcpp The most widely used extension method for R Call C, C++, or Fortran from R Companion project RInside to call R from C++ Extensive support even for advanced C++ Create R packages or inline code http://rcpp.org Dirk Eddelbuettel’s book Simple Rcpp example library(Rcpp) cppFunction('int add(int x, int y, int z) { int sum = x + y + z; return sum; }') add(1, 2, 3) .NET RDCOM http://sunsite.univie.ac.at/rcom/ F# type provider for R http://bluemountaincapital.github.io/FSharpRProvider/ R.NET https://rdotnet.codeplex.com/ SQL Server 2016 execute sp_execute_external_script @language = N'R' , @script =
    [Show full text]
  • Scientific Tools for Linux
    Scientific Tools for Linux Ryan Curtin LUG@GT Ryan Curtin Getting your system to boot with initrd and initramfs - p. 1/41 Goals » Goals This presentation is intended to introduce you to the vast array Mathematical Tools of software available for scientific applications that run on Electrical Engineering Tools Linux. Software is available for electrical engineering, Chemistry Tools mathematics, chemistry, physics, biology, and other fields. Physics Tools Other Tools Questions? Ryan Curtin Getting your system to boot with initrd and initramfs - p. 2/41 Non-Free Mathematical Tools » Goals MATLAB (MathWorks) Mathematical Tools » Non-Free Mathematical Tools » MATLAB » Mathematica Mathematica (Wolfram Research) » Maple » Free Mathematical Tools » GNU Octave » mathomatic Maple (Maplesoft) »R » SAGE Electrical Engineering Tools S-Plus (Mathsoft) Chemistry Tools Physics Tools Other Tools Questions? Ryan Curtin Getting your system to boot with initrd and initramfs - p. 3/41 MATLAB » Goals MATLAB is a fully functional mathematics language Mathematical Tools » Non-Free Mathematical Tools You may be familiar with it from use in classes » MATLAB » Mathematica » Maple » Free Mathematical Tools » GNU Octave » mathomatic »R » SAGE Electrical Engineering Tools Chemistry Tools Physics Tools Other Tools Questions? Ryan Curtin Getting your system to boot with initrd and initramfs - p. 4/41 Mathematica » Goals Worksheet-based mathematics suite Mathematical Tools » Non-Free Mathematical Tools Linux versions can be buggy and bugfixes can be slow » MATLAB
    [Show full text]
  • Pipenightdreams Osgcal-Doc Mumudvb Mpg123-Alsa Tbb
    pipenightdreams osgcal-doc mumudvb mpg123-alsa tbb-examples libgammu4-dbg gcc-4.1-doc snort-rules-default davical cutmp3 libevolution5.0-cil aspell-am python-gobject-doc openoffice.org-l10n-mn libc6-xen xserver-xorg trophy-data t38modem pioneers-console libnb-platform10-java libgtkglext1-ruby libboost-wave1.39-dev drgenius bfbtester libchromexvmcpro1 isdnutils-xtools ubuntuone-client openoffice.org2-math openoffice.org-l10n-lt lsb-cxx-ia32 kdeartwork-emoticons-kde4 wmpuzzle trafshow python-plplot lx-gdb link-monitor-applet libscm-dev liblog-agent-logger-perl libccrtp-doc libclass-throwable-perl kde-i18n-csb jack-jconv hamradio-menus coinor-libvol-doc msx-emulator bitbake nabi language-pack-gnome-zh libpaperg popularity-contest xracer-tools xfont-nexus opendrim-lmp-baseserver libvorbisfile-ruby liblinebreak-doc libgfcui-2.0-0c2a-dbg libblacs-mpi-dev dict-freedict-spa-eng blender-ogrexml aspell-da x11-apps openoffice.org-l10n-lv openoffice.org-l10n-nl pnmtopng libodbcinstq1 libhsqldb-java-doc libmono-addins-gui0.2-cil sg3-utils linux-backports-modules-alsa-2.6.31-19-generic yorick-yeti-gsl python-pymssql plasma-widget-cpuload mcpp gpsim-lcd cl-csv libhtml-clean-perl asterisk-dbg apt-dater-dbg libgnome-mag1-dev language-pack-gnome-yo python-crypto svn-autoreleasedeb sugar-terminal-activity mii-diag maria-doc libplexus-component-api-java-doc libhugs-hgl-bundled libchipcard-libgwenhywfar47-plugins libghc6-random-dev freefem3d ezmlm cakephp-scripts aspell-ar ara-byte not+sparc openoffice.org-l10n-nn linux-backports-modules-karmic-generic-pae
    [Show full text]
  • Modeling and Analysis of Hybrid Systems
    Building Bridges between Symbolic Computation and Satisfiability Checking Erika Abrah´ am´ RWTH Aachen University, Germany in cooperation with Florian Corzilius, Gereon Kremer, Stefan Schupp and others ISSAC’15, 7 July 2015 Photo: Prior Park, Bath / flickr Liam Gladdy What is this talk about? Satisfiability problem The satisfiability problem is the problem of deciding whether a logical formula is satisfiable. We focus on the automated solution of the satisfiability problem for first-order logic over arithmetic theories, especially on similarities and differences in symbolic computation and SAT and SMT solving. Erika Abrah´ am´ - SMT solving and Symbolic Computation 2 / 39 CAS SAT SMT (propositional logic) (SAT modulo theories) Enumeration Computer algebra DP (resolution) systems [Davis, Putnam’60] DPLL (propagation) [Davis,Putnam,Logemann,Loveland’62] Decision procedures NP-completeness [Cook’71] for combined theories CAD Conflict-directed [Shostak’79] [Nelson, Oppen’79] backjumping Partial CAD Virtual CDCL [GRASP’97] [zChaff’04] DPLL(T) substitution Watched literals Equalities and uninterpreted Clause learning/forgetting functions Variable ordering heuristics Bit-vectors Restarts Array theory Arithmetic Decision procedures for first-order logic over arithmetic theories in mathematical logic 1940 Computer architecture development 1960 1970 1980 2000 2010 Erika Abrah´ am´ - SMT solving and Symbolic Computation 3 / 39 SAT SMT (propositional logic) (SAT modulo theories) Enumeration DP (resolution) [Davis, Putnam’60] DPLL (propagation) [Davis,Putnam,Logemann,Loveland’62]
    [Show full text]
  • A;Dkd; A;Kdd A;Kdk Akd;Ka D;Ak A;Kd;Akd A;Kd;Akd;Ka ;Akd;Ka A;Dkd
    Journal of Computer and Mathematical Sciences, Vol.7(3), 122-129, March 2016 ISSN 0976-5727 (Print) (An International Research Journal), www.compmath-journal.org ISSN 2319 - 8133 (Online) Integrating New Technologies and Tools in Teaching and Learning of Mathematics: An Overview Momin Fasiyoddin Inayat1 and Shaikh Naeem Hamid2 1Department of Mathematics, Milliya Arts, Science and Management Science College, Beed, Maharashtra -431122, INDIA. email:[email protected] 2Department of Computer Science, Milliya Arts, Science and Management Science College, Beed, Maharashtra -431122, INDIA. email:[email protected] (Received on: March 26, 2016) ABSTRACT Mathematics has remained a difficult and unpopular subject for most of the students. This is despite its importance almost in all careers, especially in the science and technology. The difficulties in learning mathematics might be due to the teaching methods employed by the educators. With the advancements in the Information Communication Technologies (ICTs), the nature of teaching and learning in mathematics is expected to change. The use of new technologies in the classrooms makes higher level mathematical activities accessible to students and also makes learning more fun, interesting, and more effective. Thus, technology can enhance students learning process by presenting content graphically, symbolically and numerically without spending extra time to calculate the complex computational problems by hand. In this paper we present an overview of the latest technologies used by the educators to make teaching and learning in mathematics more effective, student-centric and dynamic. Keywords: Technology, ICT, Teaching, Learning, Mathematics. 1. INTRODUCTION The developments in technology and tools in the past century have brought changes that transformed education.
    [Show full text]
  • 1 of 3 10/23/2010 02:45 PM
    http://mathomatic.org/quickref.txt ****************************************************************************** Mathomatic Command Summary -------------------------- approximate - Approximate all numerical values in equation spaces. Usage: approximate [equation-number-ranges] calculate - Temporarily plug in values for variables and approximate. Usage: calculate ["factor"] [variable number-of-iterations] This command may be preceded with "repeat". clear - Delete expressions stored in memory so equation spaces can be reused. Usage: clear [equation-number-ranges] Tip: Use "clear all" to quickly restart Mathomatic. code - Output C, Java, or Python code for the specified equations. Usage: code ["c" or "java" or "python" or "integer"] [equation-number-ranges] Related commands: simplify, optimize, and variables compare - Compare two equation spaces to see if mathematically the same. Usage: compare ["symbolic"] equation-number ["with" equation-number] copy - Duplicate the contents of the specified equation spaces. Usage: copy [equation-number-range] derivative - Symbolically differentiate and simplify, order times. Usage: derivative ["nosimplify"] [variable or "all"] [order] Alternate name for this command: differentiate display - Display equation spaces in pretty multi-line (2D) fraction format. Usage: display ["factor"] [equation-number-ranges] divide - Prompt for 2 numbers or polynomials and divide. Give result and GCD. Usage: divide [variable] This command may be preceded with "repeat". echo - Output a line of text, followed by a newline. Usage: echo [text] edit - Edit all equation spaces or an input file, then read them in. Usage: edit [file-name] eliminate - Substitute the specified variables with solved equations. Usage: eliminate variables or "all" ["using" equation-number] This command may be preceded with "repeat". extrema - Show where the slope of the current equation equals zero. Usage: extrema [variable] [order] factor - Factor variables in equation spaces or factor given integers.
    [Show full text]
  • Spark 2.0 Reference Manual
    SPARK 2.0 REFERENCE MANUAL Simulation Problem Analysis and Research Kernel Copyright 1997-2003 Lawrence Berkeley National Laboratory Ayres Sowell Associates, Inc. Pending approval of the U.S. Department of Energy. All rights reserved. This work was supported by the Assistant Secretary for Energy Efficiency and Renewable Energy, Office of Building Technologies Program of the U.S. Dept. of Energy. Contract No. DE-AC03-76SF00098. SPARK 2.0 Reference Manual TABLE OF CONTENTS TABLE OF CONTENTS ................................................................................................................................................II FOREWORD ................................................................................................................................................................VII LICENSES AND COPYRIGHTS............................................................................................................................. VIII TEXT CONVENTIONS ............................................................................................................................................... IX 1 INTRODUCTION ...................................................................................................................................................1 1.1 WHAT IS SPARK? ..............................................................................................................................................1 1.2 KINDS OF PROBLEMS THAT SPARK CAN SOLVE ................................................................................................1
    [Show full text]
  • Open Source Resources for Teaching and Research in Mathematics
    Open Source Resources for Teaching and Research in Mathematics Dr. Russell Herman Dr. Gabriel Lugo University of North Carolina Wilmington Open Source Resources, ICTCM 2008, San Antonio 1 Outline History Definition General Applications Open Source Mathematics Applications Environments Comments Open Source Resources, ICTCM 2008, San Antonio 2 In the Beginning ... then there were Unix, GNU, and Linux 1969 UNIX was born, Portable OS (PDP-7 to PDP-11) – in new “C” Ken Thompson, Dennis Ritchie, and J.F. Ossanna Mailed OS => Unix hackers Berkeley Unix - BSD (Berkeley Systems Distribution) 1970-80's MIT Hackers Public Domain projects => commercial RMS – Richard M. Stallman EMACS, GNU - GNU's Not Unix, GPL Open Source Resources, ICTCM 2008, San Antonio 3 History Free Software Movement – 1983 RMS - GNU Project – 1983 GNU GPL – GNU General Public License Free Software Foundation (FSF) – 1985 Free = “free speech not free beer” Open Source Software (OSS) – 1998 Netscape released Mozilla source code Open Source Initiative (OSI) – 1998 Eric S. Raymond and Bruce Perens The Cathedral and the Bazaar 1997 - Raymond Open Source Resources, ICTCM 2008, San Antonio 4 The Cathedral and the Bazaar The Cathedral model, source code is available with each software release, code developed between releases is restricted to an exclusive group of software developers. GNU Emacs and GCC are examples. The Bazaar model, code is developed over the Internet in public view Raymond credits Linus Torvalds, Linux leader, as the inventor of this process. http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar Open Source Resources, ICTCM 2008, San Antonio 5 Given Enough Eyeballs ... central thesis is that "given enough eyeballs, all bugs are shallow" the more widely available the source code is for public testing, scrutiny, and experimentation, the more rapidly all forms of bugs will be discovered.
    [Show full text]
  • The Current State of Computer Algebra System on Tablet Devices
    The current state of computer algebra system on tablet devices Mitsushi Fujimoto Fukuoka University of Education ∗ 1 Introduction Infty project[1] developed and released some useful software including InftyReader { an OCR system for mathematical documents. InftyEditor is one of the products developed by Infty project, and is a mathematics typesetting tool. The author, a core member of Infty project, built into InftyEditor a computing function for mathematical expressions[2]. In 2003, AsirPad[3], a computer algebra system with a handwriting interface on PDA, was developed using the technology of InftyEditor. AsirPad can communicate with Risa/Asir[4] through OpenXM protocol[5], and calculate mathematical expressions inputted by handwriting. This is an application for Zaurus that is a PDA with 400MHz CPU, 64MB memory, Linux OS, 3.7inch VGA screen and the weight 250g. The mainstream of the current mobile devices is shifting to smartphones or tablet devices and some computer algebra systems for these platforms are developed. In this article we explore the current state of computer algebra system on tablet devices. 2 Mathellan project and tablet devices AsirPad was used to present a lecture on RSA cryptography at a junior high school[6]. Ordinary calculator is not available because encryption and decryption in RSA use division of large numbers. The students learned how to encrypt/decrypt their messages through calculations by AsirPad. They could input mathematical expressions and calculate without any special training. We could get a result for usefulness of PDA and handwriting interface from this lecture. In 2010, we started Mathellan Project, a mobile Math e-Learning project, to go the next step.
    [Show full text]