53 research outputs found

    Gradually learning programming supported by a growable programming language

    Get PDF
    Learning programming is a difficult task. The learning process is particularly disorienting when you are approaching programming for the first time. As a student you are exposed to several new concepts (control flow, variable, etc. but also coding, compiling etc.) and new ways to think (algorithms). Teachers try to expose the students gradually to the new concepts by presenting them one by one but the tools at student's disposal do not help: they provide support, suggestion and documentation for the full programming language of choice hampering the teacher's efforts. On the other side, students need to learn real languages and not didactic languages. In this work we propose an approach to gradually teaching programming supported by a programming language that grows---together with its implementation---along with the number of concepts presented to the students. The proposed approach can be applied to the teaching of any programming language and some experiments with Javascript are reported

    Introducing novice programmers to functions and recursion using computer games

    Get PDF

    A virtual robot solution to support programming

    Get PDF
    Computer programming is a valuable skill. But learning programming is sometimes difficult, time-consuming, even frustrating. In this context, there is a need for new approaches to help in the process of learning programming. Here it is presented a solution based on a virtual robot with progressive system and supported in a generic and portable language. Those features answer to some needs. First, the virtual robot allows for certain level tangibility to the results. Then, the implementation as a progressive system allows for the support of the learning process. Finally, the use of a generic and portable language allows for the installation of the system on many platforms.info:eu-repo/semantics/acceptedVersio

    Gradual Grammars: Syntax in Levels and Locales

    Get PDF
    Programming language implementations are often one-sizefits-all. Irrespective of the ethnographic background or proficiency of their users, they offer a single, canonical syntax for all language users. Whereas professional software developers might be willing to learn a programming language all in one go, this might be a significant barrier for non-technical users, such as children who learn to program, or domain experts using domain-specific languages (DSLs). Parser tools, however, do not offer sufficient support for graduality or internationalization, leading (worst case) to maintaining multiple parsers, for each target class of users. In this paper we present Fabric, a grammar formalism that supports: 1) the gradual extension with (and deprecation of) syntactic constructs in consecutive levels (“vertical”), and, orthogonally, 2) the internationalization of syntax by translating keywords and shuffling sentence order (“horizontal”). This is done in such a way that downstream language processors (compilers, interpreters, type checkers etc.) are affected as little as possible. We discuss the design of Fabric and its implementation on top of the LARK parser generator, and how Fabric can be embedded in the Rascal language workbench. A case study on the gradual programming language Hedy shows that language levels can be represented and internationalized concisely, with hardly any duplication. We evaluate the Fabric library using the Rebel2 DSL, by translating it to Dutch, and “untranslating” its concrete syntax trees, to reuse its existing compiler. Fabric thus provides a principled approach to gradual syntax definition in levels and locales.</p

    Choosy and Picky: Configuration of Language Product Lines

    Get PDF
    Although most programming languages naturally share several language features, they are typically implemented as a monolithic product. Language features cannot be plugged and unplugged from a language and reused in another language. Some modular approaches to language construction do exist but composing language features requires a deep understanding of its implementation hampering their use. The choose and pick approach from software product lines provides an easy way to compose a language out of a set of language features. However, current approaches to language product lines are not sufficient enough to cope with the complexity and evolution of real world programming languages. In this work, we propose a general light-weight bottom-up approach to automatically extract a feature model from a set of tagged language components. We applied this approach to the Neverlang language development framework and developed the AiDE tool to guide language developers towards a valid language composition. The approach has been evaluated on a decomposed version of Javascript to highlight the benefits of such a language product line

    Open Programming Language Interpreters

    Get PDF
    Context: This paper presents the concept of open programming language interpreters and the implementation of a framework-level metaobject protocol (MOP) to support them. Inquiry: We address the problem of dynamic interpreter adaptation to tailor the interpreter's behavior on the task to be solved and to introduce new features to fulfill unforeseen requirements. Many languages provide a MOP that to some degree supports reflection. However, MOPs are typically language-specific, their reflective functionality is often restricted, and the adaptation and application logic are often mixed which hardens the understanding and maintenance of the source code. Our system overcomes these limitations. Approach: We designed and implemented a system to support open programming language interpreters. The prototype implementation is integrated in the Neverlang framework. The system exposes the structure, behavior and the runtime state of any Neverlang-based interpreter with the ability to modify it. Knowledge: Our system provides a complete control over interpreter's structure, behavior and its runtime state. The approach is applicable to every Neverlang-based interpreter. Adaptation code can potentially be reused across different language implementations. Grounding: Having a prototype implementation we focused on feasibility evaluation. The paper shows that our approach well addresses problems commonly found in the research literature. We have a demonstrative video and examples that illustrate our approach on dynamic software adaptation, aspect-oriented programming, debugging and context-aware interpreters. Importance: To our knowledge, our paper presents the first reflective approach targeting a general framework for language development. Our system provides full reflective support for free to any Neverlang-based interpreter. We are not aware of any prior application of open implementations to programming language interpreters in the sense defined in this paper. Rather than substituting other approaches, we believe our system can be used as a complementary technique in situations where other approaches present serious limitations

    Estructura y herramientas para un curso inicial sobre programación orientada a objetos

    Get PDF
    Presentamos un proyecto sobre enseñanza de la Programación Orientada a Objetos (POO), en el que se estudian tanto las posibles estructuraciones de un curso inicial sobre POO, como las herramientas a utilizar en el mismo. Partimos de las dificultades que los docentes asociados al proyecto notamos en el dictado de cursos desde hace más de 10 años, y de la literatura existente sobre el tema. Se formalizó una estructura de curso en cuatro etapas, y se desarrolló un lenguaje y entorno de programación didácticos que acompañan la secuencia sugerida. El entorno incluye facilidades avanzadas de edición, una consola interactiva, soporte para tests de ejecución automática, generación automática de diagramas, errores de codificación adecuados a estudiantes iniciales que aparecen mientras se tipea, entre otras características. Estos resultados se utilizan en cursos de 5 universidades nacionales desde 2015. También hemos presentado nuestros resultados en eventos nacionales e internacionales. Actualmente estamos trabajando en distintas direcciones con el objetivo de que otros docentes puedan incorporar los resultados de nuestro trabajo. Hay un tesista de doctorado, uno de licenciatura, y dos becarios estudiantes colaborando en el proyecto.Eje: Innovación en Sistemas de Software.Red de Universidades con Carreras en Informátic

    Estructura y herramientas para un curso inicial sobre programación orientada a objetos

    Get PDF
    Presentamos un proyecto sobre enseñanza de la Programación Orientada a Objetos (POO), en el que se estudian tanto las posibles estructuraciones de un curso inicial sobre POO, como las herramientas a utilizar en el mismo. Partimos de las dificultades que los docentes asociados al proyecto notamos en el dictado de cursos desde hace más de 10 años, y de la literatura existente sobre el tema. Se formalizó una estructura de curso en cuatro etapas, y se desarrolló un lenguaje y entorno de programación didácticos que acompañan la secuencia sugerida. El entorno incluye facilidades avanzadas de edición, una consola interactiva, soporte para tests de ejecución automática, generación automática de diagramas, errores de codificación adecuados a estudiantes iniciales que aparecen mientras se tipea, entre otras características. Estos resultados se utilizan en cursos de 5 universidades nacionales desde 2015. También hemos presentado nuestros resultados en eventos nacionales e internacionales. Actualmente estamos trabajando en distintas direcciones con el objetivo de que otros docentes puedan incorporar los resultados de nuestro trabajo. Hay un tesista de doctorado, uno de licenciatura, y dos becarios estudiantes colaborando en el proyecto.Eje: Innovación en Sistemas de Software.Red de Universidades con Carreras en Informátic

    Estructura y herramientas para un curso inicial sobre programación orientada a objetos

    Get PDF
    Presentamos un proyecto sobre enseñanza de la Programación Orientada a Objetos (POO), en el que se estudian tanto las posibles estructuraciones de un curso inicial sobre POO, como las herramientas a utilizar en el mismo. Partimos de las dificultades que los docentes asociados al proyecto notamos en el dictado de cursos desde hace más de 10 años, y de la literatura existente sobre el tema. Se formalizó una estructura de curso en cuatro etapas, y se desarrolló un lenguaje y entorno de programación didácticos que acompañan la secuencia sugerida. El entorno incluye facilidades avanzadas de edición, una consola interactiva, soporte para tests de ejecución automática, generación automática de diagramas, errores de codificación adecuados a estudiantes iniciales que aparecen mientras se tipea, entre otras características. Estos resultados se utilizan en cursos de 5 universidades nacionales desde 2015. También hemos presentado nuestros resultados en eventos nacionales e internacionales. Actualmente estamos trabajando en distintas direcciones con el objetivo de que otros docentes puedan incorporar los resultados de nuestro trabajo. Hay un tesista de doctorado, uno de licenciatura, y dos becarios estudiantes colaborando en el proyecto.Eje: Innovación en Sistemas de Software.Red de Universidades con Carreras en Informátic
    corecore