10 research outputs found

    Introducing programming skills in children through toys (robot) to enhance their cognitive skills and critical thinking

    Get PDF
    Applied project submitted to the Department of Computer Science, Ashesi University, in partial fulfillment of Bachelor of Science degree in Computer Science, April 2018As decade after decade passes, the world has proved extremely progressive especially in technology. As the world goes completely digital and most people become computer savvy, it is pivotal to have programming skills to avoid becoming redundant. In creating a world where programming skills is a culture, it is necessary to instil such skills right from the start with children. Therefore, teaching programming in schools is just as necessary as other core subjects. Nevertheless, in many schools in Africa, programming is a skill that many meet while in university if and only if the school in which they attend has a curriculum that forces them to do so otherwise it remains a gap in the education. Programming is core in developing critical thinking, computational thinking, and problem solving skills among children. Besides programming being taught, it is ideal that the method used to impart knowledge is fun, easier and the best in aiding understanding. This project proposes the use of the Safari (robot) developed using Arduino and Dual Tone Multiple Frequency (DTMF) to teach programming concepts to children using a phone as a controller to move the robot in four main directions; right, left, forward, backwards and repetitively. This will be useful both in schools and homes to teach young children programming concepts for its ease of use and enhancing fun.Ashesi Universit

    Energy Consumption of Automated Program Repair

    Full text link
    Automated program repair (APR) aims to automatize the process of repairing software bugs in order to reduce the cost of maintaining software programs. Moreover, the success (given by the accuracy metric) of APR approaches has been increasing in recent years. However, no previous work has considered the energy impact of repairing bugs automatically using APR. The field of green software research aims to measure the energy consumption required to develop, maintain and use software products. This paper combines, for the first time, the APR and Green software research fields. We have as main goal to define the foundation for measuring the energy consumption of the APR activity. For that, we present a set of metrics specially crafted to measure the energy consumption of APR tools and a generic methodology to calculate them. We instantiate the methodology in the context of Java program repair. We measure the energy consumption of 10 program repair tools trying to repair real bugs from Defects4J, a set of real buggy programs. The initial results from this experiment show the existing trade-off between energy consumption and the ability to correctly repair bugs: Some APR tools are capable of achieving higher accuracy by spending less energy than other tools

    Understanding Counterexamples for Relational Properties with DIbugger

    Get PDF
    Software verification is a tedious process that involves the analysis of multiple failed verification attempts, and adjustments of the program or specification. This is especially the case for complex requirements, e.g., regarding security or fairness, when one needs to compare multiple related runs of the same software. Verification tools often provide counterexamples consisting of program inputs when a proof attempt fails, however it is often not clear why the reported counterexample leads to a violation of the checked property. In this paper, we enhance this aspect of the software verification process by providing \emph{DIbugger}, a tool for analyzing counterexamples of relational properties, allowing the user to debug multiple related programs simultaneously

    DDC: un depurador declarativo para C++

    Get PDF
    Trabajo Fin de Máster en Métodos Formales en Ingeniería Informática, Facultad de Informática UCM, Departamento de Sistemas Informáticos y Computación, Curso 2021/2022.A declarative debugger for C++ is presented, called DDC. A declarative debugger receives as input an incorrect computation, builds a debugging tree based on the execution of the program and, after asking questions to an oracle (typically the user), points out a fragment of code that is the cause of the failure. We present the debugger’s main features, such as three different navigation strategies, using test cases as oracles, support for nonterminating programs and a tree transformation.Presentamos un depurador declarativo para C++, llamado DDC. Un depurador declarativo recibe como argumento de entrada una computación incorrecta, construye un árbol de depuración basado en la ejecución del programa y, después de preguntar a un oráculo (típicamente el usuario), indica el fragmento de código causante del fallo. Presentamos las principales características del depurador, tales como tres estrategias de navegación, el uso de casos de prueba como oráculo, capacidad de depurar programas que no terminan y una transformación de árbol.Depto. de Sistemas Informáticos y ComputaciónFac. de InformáticaTRUEunpu

    MetaAPR

    Get PDF
    Department of Computer Science and EngineeringAutomated Program Repair (APR) aims to help developers automatically fix software bugs. However, current traditional and learning-based APR techniques suffer from the problem of limited fixes, although the candidates of patches contain relevant approaches(patterns) to fix the buggy program. In recent years, researchers leveraged the idea of using Deep Learning Models for efficient bug fixing with trained models, which determines relevant bug fixing patterns. Also, the idea of using Large Language Models, which is trained on a large amount of data, is gaining more acceptance in the Program Repair field. Deriving out of that, it is possible to combine both approaches for efficient bug fixing. In this work, we perform a program repair technique that consists of a two-step approach that makes use of existing learning-based APR techniques and Large Language Models. Firstly, we acquire relevant patterns for bug fixing the particular program from any arbitrary learning-based models by performing template extraction. Secondly, after extracting templates we feed them into LLM models to generate concrete patches by filling the template with some tokens.clos

    Time-Traveling Debugging Queries: Faster Program Exploration

    Get PDF
    International audienceEfficiently debugging a program requires program comprehension. To acquire it, developers explore the program execution, a task often performed using interactive debuggers. Unfortunately, exploring a program execution through standard interactive debuggers is a tedious and costly task. In this paper, we propose Time-Traveling Queries (TTQs) to ease program exploration. TTQs is a mechanism that automatically explores program executions to collect execution data. This data is used to time-travel through execution states, facilitating the exploration of program executions. We built a set of key TTQs based on typical questions developers ask when trying to understand programs. We conducted a user study with 34 participants to evaluate the impact of our queries on program comprehension activities. Results show that, compared to traditional debugging tools, TTQs significantly improve developers' precision, while reducing required time and efforts when performing program comprehension tasks

    Automating telemetry- and trace-based analytics on large-scale distributed systems

    Get PDF
    Large-scale distributed systems---such as supercomputers, cloud computing platforms, and distributed applications---routinely suffer from slowdowns and crashes due to software and hardware problems, resulting in reduced efficiency and wasted resources. These large-scale systems typically deploy monitoring or tracing systems that gather a variety of statistics about the state of the hardware and the software. State-of-the-art methods either analyze this data manually, or design unique automated methods for each specific problem. This thesis builds on the vision that generalized automated analytics methods on the data sets collected from these complex computing systems provide critical information about the causes of the problems, and this analysis can then enable proactive management to improve performance, resilience, efficiency, or security significantly beyond current limits. This thesis seeks to design scalable, automated analytics methods and frameworks for large-scale distributed systems that minimize dependency on expert knowledge, automate parts of the solution process, and help make systems more resilient. In addition to analyzing data that is already collected from systems, our frameworks also identify what to collect from where in the system, such that the collected data would be concise and useful for manual analytics. We focus on two data sources for conducting analytics: numeric telemetry data, which is typically collected from operating system or hardware counters, and end-to-end traces collected from distributed applications. This thesis makes the following contributions in large-scale distributed systems: (1) Designing a framework for accurately diagnosing previously encountered performance variations, (2) designing a technique for detecting (unwanted) applications running on the systems, (3) developing a suite for reproducing performance variations that can be used to systematically develop analytics methods, (4) designing a method to explain predictions of black-box machine learning frameworks, and (5) constructing an end-to-end tracing framework that can dynamically adjust instrumentation for effective diagnosis of performance problems.2021-09-28T00:00:00

    The Debugging Mindset

    No full text
    corecore