48 research outputs found

    DRAFT-What you always wanted to know but could not find about block-based environments

    Get PDF
    Block-based environments are visual programming environments, which are becoming more and more popular because of their ease of use. The ease of use comes thanks to their intuitive graphical representation and structural metaphors (jigsaw-like puzzles) to display valid combinations of language constructs to the users. Part of the current popularity of block-based environments is thanks to Scratch. As a result they are often associated with tools for children or young learners. However, it is unclear how these types of programming environments are developed and used in general. So we conducted a systematic literature review on block-based environments by studying 152 papers published between 2014 and 2020, and a non-systematic tool review of 32 block-based environments. In particular, we provide a helpful inventory of block-based editors for end-users on different topics and domains. Likewise, we focused on identifying the main components of block-based environments, how they are engineered, and how they are used. This survey should be equally helpful for language engineering researchers and language engineers alike

    EUD-MARS: End-User Development of Model-Driven Adaptive Robotics Software Systems

    Get PDF
    Empowering end-users to program robots is becoming more significant. Introducing software engineering principles into end-user programming could improve the quality of the developed software applications. For example, model-driven development improves technology independence and adaptive systems act upon changes in their context of use. However, end-users need to apply such principles in a non-daunting manner and without incurring a steep learning curve. This paper presents EUD-MARS that aims to provide end-users with a simple approach for developing model-driven adaptive robotics software. End-users include people like hobbyists and students who are not professional programmers but are interested in programming robots. EUD-MARS supports robots like hobby drones and educational humanoids that are available for end-users. It offers a tool for software developers and another one for end-users. We evaluated EUD-MARS from three perspectives. First, we used EUD-MARS to program different types of robots and assessed its visual programming language against existing design principles. Second, we asked software developers to use EUD-MARS to configure robots and obtained their feedback on strengths and points for improvement. Third, we observed how end-users explain and develop EUD-MARS programs, and obtained their feedback mainly on understandability, ease of programming, and desirability. These evaluations yielded positive indications of EUD-MARS

    DBSnap 2: New Features to Construct Database Queries by Snapping Blocks

    Get PDF
    Block-based environments for creating computer programs have become very useful learning tools in computer science as they enable focusing on the logic of a program rather than on its syntactical details. While most block-based environments support conventional (imperative) instructions, a few tools have been proposed to create database queries. One of these tools is DBSnap, a highly dynamic and open-source tool to create database query trees by dragging and connecting visual blocks representing datasets and database operators. In this paper, we introduce DBSnap 2, an extension of DBSnap that provides a set of improvements to facilitate the creation of simple and complex queries. The improvements include the support of database views (a key database concept), saving and importing queries, inserting, updating, and deleting data, the creation of charts, and various visual improvements. The demonstration of DBSnap 2 will show how the new features simplify the creation of queries and enable the graphical visualization of query results

    Exploring Visual Programming Concepts for Probabilistic Programming Languages

    Get PDF
    Probabilistic programming is a way to create systems that help us make decisions in the face of uncertainty. Lots of everyday decisions involve judgment in determining relevant factors that we do not directly observe. Historically, one way to help make decisions under uncertainty has been to use a probabilistic reasoning system. Probabilistic reasoning combines our knowledge of a situation with the laws of probability to determine those unobserved factors that are critical to the decision. Typically, the way the several observations are combined is through the usage of bayesian statistics, due to its anachronistic interpretation where existing knowledge (priors) are combined with observations in order to gather evidence towards competing hypothesis.When compared to other machine learning methods (such as random forests, neural networks or linear regression), which take homogeneous data as input (requiring the user to separate their domain into different models), probabilistic programming is used to leverage the data's original structure. Plus, it provides full probability distributions over both the predictions and parameters of the model, whereas ML methods can only give the user a certain degree of confidence on the predictions.Until recently, probabilistic reasoning systems have been limited in scope, and have been hard to apply to many real world situations. Models are communicated using a mix of natural language, pseudo code, and mathematical formulae and solved using special purpose, one-off inference methods. Rather than precise specifications suitable for automatic inference, graphical models typically serve as coarse, high-level descriptions, eliding critical aspects such as fine-grained independence, abstraction and recursion.Probabilistic programming is a new approach that makes probabilistic reasoning systems easier to build and more widely applicable. A probabilistic programming language (PPL) is a programming language designed to describe probabilistic models, in a such a way we can say that the program itself is the model, and then perform inference in those models. PPLs have seen recent interest from the artificial intelligence, programming languages, cognitive science, and natural languages communities. By empowering users with a common dialect in the form of a programming language, rather than requiring each one of them to the non-trivial and error-prone task of writing their own models and hand-tailored inference algorithms for the problem at hand, it encourages exploration, since different models require less time to setup and evaluate, and enables sharing knowledge in the form of best practices, patterns and tools such as optimized compilers or interpreters, debuggers, IDE's, optimizers and profilers.PPLs are closely related to graphical models and Bayesian networks, but are more expressive and flexible. One can easily realize this by looking at the re-usable components PPLs offer, being one of them the inference engine, which can be plugged in into different models. For instances, it is easy to replace the exact-solution traditional Bayesian networks inference, which requires time exponential in the number of variables to run, with approximation algorithms such as the Markov Chain Monte Carlo (MCMC) or Variational Message Passing (VMP), which make it possible to compute large hierarchical models by resorting to sampling and approximation. PPLs often extend from a basic language (i.e., they are embedded in a host language like R, Java or Scala), although some PPLs such as WinBUGS and Stan offer a self-contained language, with no obvious origin in another language.There have been successful applications of visual programming among several domains, being it education (MIT's Scratch and Microsoft's VPL), general-purpose programming (NoFlo), 3D modeling (Blender) and data science (RapidMiner and Weka Knowledge Flow). The latter, being popular products, have shown that there is added value in providing a graphical representation for working with data. However, as of today no tool provides a graphical representation for a PPL.DARPA, the main funder behind PPLs' research, considers one of the main key points of its Probabilistic Programming for Advancing Machine Learning program to make models easier to write (reducing development time, encouraging experimentation and reducing the level of expertise required to develop such models). The use of visual programming is suitable for this kind of objectives, so building upon the enormous flexibility of PPLs and the advantages of probabilistic models, we want to take advantage of the graphical intuition given by data visualization that data scientists are now accustomed to, and attempt to provide model and algorithmical visualization by rethinking how to capture the (usually textual) programmatic formalisms in a graphical manner.The goal of this dissertation is thus to explore graphical representations of a probabilistic programming language through the usage of node-based programming. The hypothesis under consideration is that graphical representations (not to be confused with bayesian graphical model), are more intuitive and easy to learn that full-blown PPLs.We intend to validate such hypothesis by ensuring that classical problems solved in the literature by PPLs are also supported by our graphical representation, and then measure how quickly a group of people trained in statistics would produce a viable model in both alternatives.Probabilistic programming is a way to create systems that help us make decisions in the face of uncertainty. Lots of everyday decisions involve judgment in determining relevant factors that we do not directly observe. Historically, one way to help make decisions under uncertainty has been to use a probabilistic reasoning system. Probabilistic reasoning combines our knowledge of a situation with the laws of probability to determine those unobserved factors that are critical to the decision. Typically, the way the several observations are combined is through the usage of bayesian statistics, due to its anachronistic interpretation where existing knowledge (priors) are combined with observations in order to gather evidence towards competing hypothesis.When compared to other machine learning methods (such as random forests, neural networks or linear regression), which take homogeneous data as input (requiring the user to separate their domain into different models), probabilistic programming is used to leverage the data's original structure. Plus, it provides full probability distributions over both the predictions and parameters of the model, whereas ML methods can only give the user a certain degree of confidence on the predictions.Until recently, probabilistic reasoning systems have been limited in scope, and have been hard to apply to many real world situations. Models are communicated using a mix of natural language, pseudo code, and mathematical formulae and solved using special purpose, one-off inference methods. Rather than precise specifications suitable for automatic inference, graphical models typically serve as coarse, high-level descriptions, eliding critical aspects such as fine-grained independence, abstraction and recursion.Probabilistic programming is a new approach that makes probabilistic reasoning systems easier to build and more widely applicable. A probabilistic programming language (PPL) is a programming language designed to describe probabilistic models, in a such a way we can say that the program itself is the model, and then perform inference in those models. PPLs have seen recent interest from the artificial intelligence, programming languages, cognitive science, and natural languages communities. By empowering users with a common dialect in the form of a programming language, rather than requiring each one of them to the non-trivial and error-prone task of writing their own models and hand-tailored inference algorithms for the problem at hand, it encourages exploration, since different models require less time to setup and evaluate, and enables sharing knowledge in the form of best practices, patterns and tools such as optimized compilers or interpreters, debuggers, IDE's, optimizers and profilers.PPLs are closely related to graphical models and Bayesian networks, but are more expressive and flexible. One can easily realize this by looking at the re-usable components PPLs offer, being one of them the inference engine, which can be plugged in into different models. For instances, it is easy to replace the exact-solution traditional Bayesian networks inference, which requires time exponential in the number of variables to run, with approximation algorithms such as the Markov Chain Monte Carlo (MCMC) or Variational Message Passing (VMP), which make it possible to compute large hierarchical models by resorting to sampling and approximation. PPLs often extend from a basic language (i.e., they are embedded in a host language like R, Java or Scala), although some PPLs such as WinBUGS and Stan offer a self-contained language, with no obvious origin in another language.There have been successful applications of visual programming among several domains, being it education (MIT's Scratch and Microsoft's VPL), general-purpose programming (NoFlo), 3D modeling (Blender) and data science (RapidMiner and Weka Knowledge Flow). The latter, being popular products, have shown that there is added value in providing a graphical representation for working with data. However, as of today no tool provides a graphical representation for a PPL.DARPA, the main funder behind PPLs' research, considers one of the main key points of its Probabilistic Programming for Advancing Machine Learning program to make models easier to write (reducing development time, encouraging experimentation and reducing the level of expertise required to develop such models). The use of visual programming is suitable for this kind of objectives, so building upon the enormous flexibility of PPLs and the advantages of probabilistic models, we want to take advantage of the graphical intuition given by data visualization that data scientists are now accustomed to, and attempt to provide model and algorithmical visualization by rethinking how to capture the (usually textual) programmatic formalisms in a graphical manner.The goal of this dissertation is thus to explore graphical representations of a probabilistic programming language through the usage of node-based programming. The hypothesis under consideration is that graphical representations (not to be confused with bayesian graphical model), are more intuitive and easy to learn that full-blown PPLs.We intend to validate such hypothesis by ensuring that classical problems solved in the literature by PPLs are also supported by our graphical representation, and then measure how quickly a group of people trained in statistics would produce a viable model in both alternatives

    Tema 2: Open Roberta - A Web Based Approach to Visually Program Real Educational Robots

    Full text link

    Programming Robots for Activities of Everyday Life

    Get PDF
    Text-based programming remains a challenge to novice programmers in\ua0all programming domains including robotics. The use of robots is gainingconsiderable traction in several domains since robots are capable of assisting\ua0humans in repetitive and hazardous tasks. In the near future, robots willbe used in tasks of everyday life in homes, hotels, airports, museums, etc.\ua0However, robotic missions have been either predefined or programmed usinglow-level APIs, making mission specification task-specific and error-prone.\ua0To harness the full potential of robots, it must be possible to define missionsfor specific applications domains as needed. The specification of missions of\ua0robotic applications should be performed via easy-to-use, accessible ways, and\ua0at the same time, be accurate, and unambiguous. Simplicity and flexibility in\ua0programming such robots are important, since end-users come from diverse\ua0domains, not necessarily with suffcient programming knowledge.The main objective of this licentiate thesis is to empirically understand the\ua0state-of-the-art in languages and tools used for specifying robot missions byend-users. The findings will form the basis for interventions in developing\ua0future languages for end-user robot programming.During the empirical study, DSLs for robot mission specification were\ua0analyzed through published literature, their websites, user manuals, samplemissions and using the languages to specify missions for supported robots.After extracting data from 30 environments, 133 features were identified.\ua0A feature matrix mapping the features to the environments was developedwith a feature model for robotic mission specification DSLs.Our results show that most end-user facing environments exist in the\ua0education domain for teaching novice programmers and STEM subjects. Mostof the visual languages are developed using Blockly and Scratch libraries.\ua0The end-user domain abstraction needs more work since most of the visualenvironments abstract robotic and programming language concepts but not\ua0end-user concepts. In future works, it is important to focus on the development\ua0of reusable libraries for end-user concepts; and further, explore how end-user\ua0facing environments can be adapted for novice programmers to learn\ua0general programming skills and robot programming in low resource settings\ua0in developing countries, like Uganda

    Establishing model-to-model interoperability in an engineering workflow

    Get PDF
    The modeling tools available for engineering design and analysis are traditionally created in isolation with features and capabilities geared toward a particular domain, that is, that many traditional engineering modeling tools are isolated, unable to readily connect to or be integrated into a larger tool set. With the advent of cloud computing and the success of delivering applications built using a microservices architecture, a more modern approach would allow an engineering design application to be composed of smaller independently developed and contributed applications within an environment capable of executing those applications without modification to the environment. This is somewhat analogous to an application store with one main difference. In the engineering design and analysis case, the goal is to enable the coupling of the applications together to perform higher level analysis, whereas in the application store, most applications are used independently. This work introduces an Application Coupling Interface (ACI), for declaring the semantics of the application programming interfaces (APIs) of a modeled subsystem, a central repository providing access to curated web enabled engineered subsystems via ACIs and an extension of an existing cloud enabled engineering modeling/design environment to incorporate a new messaging system capable of autonomously orchestrating the execution and exchange of data between the subsystems. Together, these components provide the basis for an extensible analysis and design platform that accelerates discovery and innovation through the promotion of contribution and reuse of web enabled engineering models

    Comparação e aplicação de diferentes ferramentas para ensino de programação para crianças

    Get PDF
    TCC(graduação)- Universidade Federal de Santa Catarina.Campus Araranguá. Tecnologias da Informação e ComunicaçãoIn this study, two programming teaching tools were implemented, Scratch and VisuAlg in two groups composed mainly of students from the 8th and 9th grade of elementary education in a public school in the city of Ararangua. Computer programming is a discipline that is present in many higher courses of a computational nature. It is also worked with children and adoles-cents, because of its characteristic in encouraging logical reasoning and problem solving, which brings benefits to school performance in disciplines such as Portuguese and mathema-tics. The problem of this work is to check which tool is the most effective for teaching pro-gramming. Program computers can be a difficult task for dif-ferent levels of education, even in higher education, the discipline has a high failure thus one of the motivations of this work is to find a method that facilitates the learning of the basic concepts, demystifying that pro-gramming is impossible, and analyze and compare the differ-ent tools that serve as aid for education. To support the proposed work, a questionnaire was developed with questions about all content explored over the activities, in addition to direct observation of students in regard to solving exercises in the classroom. After analyzing the results, we can say that the Scratch tool is the most suitable for learning the basic and initial programming concepts, in addition, the general opinion of the students was positive, taking into account the answers to the open question about the activities as a whole, reaching then the initial goal of the work.No presente trabalho, realizou-se a aplicação de duas ferramentas de ensino de programação, Scratch e VisuAlg, em duas turmas compostas majoritariamente por alunos do 8º e 9º ano do ensino fundamental de uma escola pública na cidade de Araranguá. A programação de com-putadores é uma disciplina presente em muitos cursos superiores de caráter computacional, é também trabalhada com crianças e adolescentes, por sua característica em incentivar o racio-cínio lógico e a resolução de problemas, o que traz benefício ao desempenho escolar, em dis-ciplinas como português e matemática, em razão disto, a problemática deste trabalho é verifi-car qual ferramenta é a mais eficaz para o ensino de programação. Programar computadores pode ser uma tarefa difícil para diferentes níveis de educação, mesmo no ensino superior, a disciplina possui um alto nível de reprovação, portanto, uma das motivações deste trabalho é encontrar um método que facilite a aprendizagem dos conceitos básicos, desmistificando que programação é algo impossível, bem como analisar e comparar as diferentes ferramentas exis-tentes que servem de auxílio para o ensino. Para corroborar com a proposta do trabalho, um questionário foi desenvolvido contendo questões sobre todo o conteúdo explorado ao longo das atividades, além da observação direta dos alunos no que se refere a resolução de exercí-cios em sala de aula. Após analisar os resultados obtidos, é possível afirmar que a ferramenta Scratch é a mais adequada para o aprendizado dos conceitos básicos e iniciais de programa-ção, além disto, a opinião geral dos alunos foi positiva, levando em consideração as respostas da questão aberta sobre as atividades como um todo, atingindo então, o objetivo inicial do trabalho
    corecore