11,724 research outputs found

    Cloud engineering is search based software engineering too

    Get PDF
    Many of the problems posed by the migration of computation to cloud platforms can be formulated and solved using techniques associated with Search Based Software Engineering (SBSE). Much of cloud software engineering involves problems of optimisation: performance, allocation, assignment and the dynamic balancing of resources to achieve pragmatic trade-offs between many competing technical and business objectives. SBSE is concerned with the application of computational search and optimisation to solve precisely these kinds of software engineering challenges. Interest in both cloud computing and SBSE has grown rapidly in the past five years, yet there has been little work on SBSE as a means of addressing cloud computing challenges. Like many computationally demanding activities, SBSE has the potential to benefit from the cloud; ‘SBSE in the cloud’. However, this paper focuses, instead, of the ways in which SBSE can benefit cloud computing. It thus develops the theme of ‘SBSE for the cloud’, formulating cloud computing challenges in ways that can be addressed using SBSE

    PyCUDA and PyOpenCL: A Scripting-Based Approach to GPU Run-Time Code Generation

    Full text link
    High-performance computing has recently seen a surge of interest in heterogeneous systems, with an emphasis on modern Graphics Processing Units (GPUs). These devices offer tremendous potential for performance and efficiency in important large-scale applications of computational science. However, exploiting this potential can be challenging, as one must adapt to the specialized and rapidly evolving computing environment currently exhibited by GPUs. One way of addressing this challenge is to embrace better techniques and develop tools tailored to their needs. This article presents one simple technique, GPU run-time code generation (RTCG), along with PyCUDA and PyOpenCL, two open-source toolkits that support this technique. In introducing PyCUDA and PyOpenCL, this article proposes the combination of a dynamic, high-level scripting language with the massive performance of a GPU as a compelling two-tiered computing platform, potentially offering significant performance and productivity advantages over conventional single-tier, static systems. The concept of RTCG is simple and easily implemented using existing, robust infrastructure. Nonetheless it is powerful enough to support (and encourage) the creation of custom application-specific tools by its users. The premise of the paper is illustrated by a wide range of examples where the technique has been applied with considerable success.Comment: Submitted to Parallel Computing, Elsevie

    Teaching programming to young learners using Scala and Kojo

    Get PDF
    This paper presents an approach to teaching programming and abstract thinking to young learners using Scala and Kojo. Kojo is an open source IDE for the Scala programming language. The approach is based on Scala APIs for turtle graphics and functional pictures, a process of interactive exploration and discovery, and structured learning material that guides learners. The approach encourages playful self-learning of basic programming principles such as sequential execution, repetition, primitives, composition, abstraction, parametrized abstraction, and nested abstractions. It also includes tools to help children read and understand programs. Results from the use of Kojo and Scala in the teaching of young learners in Sweden and India are presented, along with a discussion of experiences and future development

    Using BIP to reinforce correctness of resource-constrained IoT applications

    No full text
    International audienceIoT applications have either a sense-only or a sense-compute-actuate goal and they implement a capability to process and respond to multiple (external) events while performing computations. Existing IoT operating systems provide a versatile execution environment that adheres to the limitations of the interconnected resource-constrained devices. To reduce the development effort, applications are often built on top of RESTful web services, which can be shared and reused. However, the asynchronous communication between remote nodes is prone to event scheduling delays, which cannot be predicted and taken into account while programming the application. Moreover, to avoid long delays in message processing and communication due to packet collisions, the data transmission frequencies between the system's nodes have to carefully chosen. In general, even when appropriate debugging tools and simulators are available, it is still a hard challenge to guarantee the required functional and non-functional properties at the application and system levels. To this end, we focus on IoT applications for the Contiki OS and we introduce a model-based rigorous analysis approach using the BIP component framework. At the application level, we verify qualitative properties regarding service responsiveness, whereas at the system level we can validate qualitative and quantitative properties using statistical model checking. We present results for an application scenario running on a distributed system infrastructure with nodes executing the Contiki OS

    The algorithm designer project : a visual programming environment for data structure demonstration

    Get PDF
    Previous work on pedagogical tools for teaching students algorithms has focused on high level animations of the algorithms. This dissertation describes a tool that gives instructors the ability to pictorially demonstrate the implementation of algorithms at the data structure level.The Algorithm Designer Project explores the use of a computer as an electronic whiteboard for instruction of computer science. It improves upon the traditional physical blackboardenvironment by providing syntactic and semantic support for data structure design and algorithm demonstration. The ultimate goal of this project is to provide an attractive, easy to use, system through which users can demonstrate simple algorithms and data structures,such as those presented in data structures textbooks. The project consists of three components: Data Structure Designer, Algorithm Designer, and Rule Designer. DataStructure Designer allows users to design and customize the appearance of data structures that they intend to use to create visual programs. Concrete examples of these data structures can be placed into Algorithm Designer and directly manipulated to demonstrate algorithms.Visual programs are programs written using pictures instead of, or in conjunction with,text. Rule Designer allows the creation and manipulation of transition rules to define visual program scripts to act upon Algorithm Designer objects. The project was implemented using the Amulet toolkit and runs on Macintosh, Windows, and UNIX platforms.A key insight discovered during development of the Algorithm Designer Project was that although textbooks employ a wide variety of data structure visualizations, the differences between these visualizations can be grouped into a small number of categories. Two unique interface items were developed during the course of the research: 1) a color mapping widget interface item that provides an easy way for the user to associate a set of colors with a range of values in a data structure visualization and 2) seeds\u27\u27 and holes, a mechanism for visually identifying and supporting type-specific semantic behavior for edge-based data structures. Finally, this dissertation describes a novel use of imperative programming constructs within a pictorial rewrite rule-based scripting system and a novel use of these rules for teaching conventional imperative programming

    MuLE : A Multi-Paradigm Language for Education

    Get PDF
    corecore