87,002 research outputs found

    Visual Programming in Prolog

    Get PDF
    A new, simple, complete visual formalism for programming in Prolog is presented. The formalism is shown to be equivalent to the standard textual notation for Prolog. We demonstrate some kinds of relationships and styles of programming that appear to be particularly lucid for novices when presented in the graphic notation, while other aspects of Prolog are identified that are clearer in the standard notation. The symbolism is proposed as a specialised complement, but not a replacement, for the traditional notation. The design of a computer interface called VPP is presented that supports visual programming in Prolog using the graphical notation. We discuss a prototype of VPP that has been implemented. We give examples to demonstrate how VPP has the capacity to allow users with little or no knowledge of Prolog to explore, understand, modify and create Prolog programs used to represent domain expertise in intelligent tutoring systems and interactive learning environments. We argue that the use of VPP may have advantages for beginners in the early stages of learning to program in Prolog, and may help to avoid certain misconceptions. We informally analyse the structure and properties of the notation from an abstract human-machine interaction viewpoint. An extension of the interpreter (dubbed VPE) designed for visualising Prolog execution spaces is presented. The limitations and possibilities for further work of both systems are identified and discussed

    Choosers: The design and evaluation of a visual algorithmic music composition language for non-programmers

    Get PDF
    Algorithmic music composition involves specifying music in such a way that it is non-deterministic on playback, leading to music which has the potential to be different each time it is played. Current systems for algorithmic music composition typically require the user to have considerable programming skill and may require formal knowledge of music. However, much of the potential user population are music producers and musicians (some professional, but many amateur) with little or no programming experience and few formal musical skills. To investigate how this gap between tools and potential users might be better bridged we designed Choosers, a prototype algorithmic programming system centred around a new abstraction (of the same name) designed to allow non-programmers access to algorithmic music composition methods. Choosers provides a graphical notation that allows structural elements of key importance in algorithmic composition (such as sequencing, choice, multi-choice, weighting, looping and nesting) to be foregrounded in the notation in a way that is accessible to non-programmers. In order to test design assumptions a Wizard of Oz study was conducted in which seven pairs of undergraduate Music Technology students used Choosers to carry out a range of rudimentary algorithmic composition tasks. Feedback was gathered using the Programming Walkthrough method. All users were familiar with Digital Audio Workstations, and as a result they came with some relevant understanding, but also with some expectations that were not appropriate for algorithmic music work. Users were able to successfully make use of the mechanisms for choice, multi-choice, looping, and weighting after a brief training period. The ‘stop’ behaviour was not so easily understood and required additional input before users fully grasped it. Some users wanted an easier way to override algorithmic choices. These findings have been used to further refine the design of Choosers

    Designing a Programming Contract Library for Java

    Get PDF
    Programmers are now developing large and complex software systems, so it’s important to have software that is consistent, efficient, and robust. Programming contracts allow developers to specify preconditions, postconditions, and invariants in order to more easily identify programming errors. The design by contract principle [1] was first used in the Eiffel programming language [2], and has since been extended to libraries in many other languages. The purpose of my project is to design a programming contract library for Java. The library supports a set of preconditions, postconditions, and invariants that are specified in Java annotations. It incorporates contract checking for objects of classes following the bean notation [3]. The library also supports checking for user-defined functions as contract conditions. This feature allows the user to check for complex contract conditions. In addition to these, the library supports contracts using lambdas in Java 8 [4], which to our knowledge has not been done in previous works on Java contracts. While the results show us that enabling contracts lowers the performance of the system, especially when lambda contracts are used, we also demonstrate how careful design can significantly reduce the overhead

    Positive loop-closed automata: a decidable class of hybrid systems

    Get PDF
    AbstractThe model-checking problem for real-time and hybrid systems is very difficult, even for a well-formed class of hybrid systems—the class of linear hybrid automata—the problem is still undecidable in general. So an important question for the analysis and design of real-time and hybrid systems is the identification of subclasses of such systems and corresponding restricted classes of analysis problems that can be settled algorithmically. In this paper, we show that for a class of linear hybrid automata called positive loop-closed automata, the satisfaction problem for linear duration properties can be solved by linear programming. We extend the traditional regular expressions with duration constraints and use them as a language to describe the behaviour of this class of linear hybrid automata. The extended notation is called duration-constrained regular expressions. Based on this formalism, we show that the model-checking problem can be reduced formally to linear programs
    • …
    corecore