109 research outputs found

    Remote Opportunities: A Rethinking and Retooling

    Get PDF
    Abstract Introducing technology as a sustainable means of creating, connecting, and collaborating reveals the need to carefully consider subtle aspects of deployment strategies and support in remote regions. In order to comprehensively address both cultural and technical issues for educational infrastructure, we consider two elements to be key: (1) a staged deployment approach, involving both educators and community members, coupled with (2) uniquely designed collaborative Integrated Development Environments (IDEs) to aid constructivism. This paper presents our current experience with these elements in the context of a pilot project for aboriginal communities on the west coast of British Columbia. Currently, these local communities have been working alongside our group for a staged deployment of programs throughout southern Vancouver Island. In our next phase we will be extending this to more remote regions in the north island and coastal regions. By building on a philosophy of CommunityDriven Initiatives for Technology (C-DIT), we hope to secure community involvement in the development and testing of necessary tool support. These tools specifically target IDEs for the development of programming skills, and support our long term goal to help secondary and postsecondary level students appreciate both the process and the art of programming

    Locking Discipline Inference and Checking

    Get PDF
    Concurrency is a requirement for much modern software, but the implementation of multithreaded algorithms comes at the risk of errors such as data races. Programmers can prevent data races by documenting and obeying a locking discipline, which indicates which locks must be held in order to access which data. This paper introduces a formal semantics for locking specifications that gives a guarantee of race freedom. The paper also provides two implementations of the formal semantics for the Java language: one based on abstract interpretation and one based on type theory. To the best of our knowledge, these are the first tools that can soundly infer and check a locking discipline for Java. Our experiments com-pare the implementations with one another and with annotations written by programmers

    First Class Copy & Paste

    Get PDF
    The Subtext project seeks to make programming fundamentally easier by altering the nature of programming languages and tools. This paper defines an operational semantics for an essential subset of the Subtext language. It also presents a fresh approach to the problems of mutable state, I/O, and concurrency.Inclusions reify copy & paste edits into persistent relationships that propagate changes from their source into their destination. Inclusions formulate a programming language in which there is no distinction between a programÂs representation and its execution. Like spreadsheets, programs are live executions within a persistent runtime, and programming is direct manipulation of these executions via a graphical user interface. There is no need to encode programs into source text.Mutation of state is effected by the computation of hypothetical recursive variants of the state, which can then be lifted into new versions of the state. Transactional concurrency is based upon queued single-threaded execution. Speculative execution of queued hypotheticals provides concurrency as a semantically transparent implementation optimization

    An Empirical Evaluation of Using Large Language Models for Automated Unit Test Generation

    Full text link
    Unit tests play a key role in ensuring the correctness of software. However, manually creating unit tests is a laborious task, motivating the need for automation. Large Language Models (LLMs) have recently been applied to this problem, utilizing additional training or few-shot learning on examples of existing tests. This paper presents a large-scale empirical evaluation on the effectiveness of LLMs for automated unit test generation without additional training or manual effort, providing the LLM with the signature and implementation of the function under test, along with usage examples extracted from documentation. We also attempt to repair failed generated tests by re-prompting the model with the failing test and error message. We implement our approach in TestPilot, a test generation tool for JavaScript that automatically generates unit tests for all API functions in an npm package. We evaluate TestPilot using OpenAI's gpt3.5-turbo LLM on 25 npm packages with a total of 1,684 API functions. The generated tests achieve a median statement coverage of 70.2% and branch coverage of 52.8%, significantly improving on Nessie, a recent feedback-directed JavaScript test generation technique, which achieves only 51.3% statement coverage and 25.6% branch coverage. We also find that 92.8% of TestPilot's generated tests have no more than 50% similarity with existing tests (as measured by normalized edit distance), with none of them being exact copies. Finally, we run TestPilot with two additional LLMs, OpenAI's older code-cushman-002 LLM and the open LLM StarCoder. Overall, we observed similar results with the former (68.2% median statement coverage), and somewhat worse results with the latter (54.0% median statement coverage), suggesting that the effectiveness of the approach is influenced by the size and training set of the LLM, but does not fundamentally depend on the specific model

    From Alice to BlueJ: a transition to Java.

    Get PDF
    The teaching of introductory courses in computing has seen several changes over the last decade. These changes not only affected the curricula when the emphasis was shifted from Imperative (also Procedural) to Object-Oriented Programming (OOP) but also reignited debates regarding which is the better programming language. Furthermore, the shift in emphasis also has encountered challenges with the object-oriented pedagogy. More recently, the assessment procedure for how students are learning object-oriented concepts has been given attention. When the programming language Java was adopted to teach object-oriented programming, it was not without difficulties. Various studies cited the development environment for Java, which was designed for professional programmers and its complex syntax structures as the main source of Javas difficulties (Kolling & Rosenberg 2001). The studies were not only limited to identifying the problems of teaching and learning Java but they also identified solutions. One of these included the creation of programming tools and environment to help novice programmers learn object-oriented concepts effectively. Among the integrated development environments created for teaching object-oriented programming using Java is BlueJ. Another programming tool for teaching object-oriented programming is Alice. The technology of animated program visualization keeps the focus on objects while teaching about behaviour and state (Dann et al 2003). The study concerns how the different programming tools help students in learning object-oriented concepts. One is classified as a text-based tool, BlueJ, and the other is graphical-based tool, Alice. There are three main questions for this study: 1. Does the process of learning object-oriented concepts using graphical-based tools differ from using text-based tools? 2. Do graphical-based tools support text-based tools in learning object-oriented concepts? 3. Do graphical-based tools offer more help in understanding object-oriented concepts than text-based tools? To answer the questions, the researcher conducted a survey whereby two sets of questionnaires were distributed to the students of Robert Gordon module entitled Object-Oriented Programming Techniques (CM1011). The student respondents found significant difference in the use of the graphical-based and text-based programming tools in understanding the following object-oriented concepts: Message Passing, Encapsulation and Polymorphism. The data gathered were also indicative that a graphical-based programming tool like Alice is helpful in learning object-oriented concepts with the use of a text-based programming tool like BlueJ. Whether graphical tools like Alice help more in understanding object-oriented concepts than text-based tools like BlueJ was inconclusive. The initial study suggests that there was no significant difference with students confidence in learning the various object-oriented concepts using the programming tools. The student respondents appeared to recognise that both programming tools are useful in learning various object-oriented concepts. However, it seems that they expected Alice to be a more sophisticated animation tool and that the animations produced would be of a cinematic calibre. The study aspires to contribute to the improvement of the object-oriented pedagogy. Specifically, it aims to contribute in the development of teaching methodologies for object-oriented programming and then create learning strategies for object-oriented programming and, not to forget, make the assessment of object-oriented programming more effective and suitable. Alongside the improvement of object-oriented programming pedagogy, the study also tries to make the computing course curricula more appropriate and flexible with the use of the various programming tools. Suggestions on how the study can be made more rigorous have been listed including use of additional data gathering instruments and methodology. Also, recommendations on how else the questions can be written were incorporated

    Integration analysis of solutions based on software as a service to implement Educational Technological Ecosystems

    Get PDF
    [ES]Una de las principales características de la actual Sociedad del Conocimiento reside en el valor del conocimiento como un recurso activo en cualquier tipo de entidad, desde instituciones educativas hasta grandes corporaciones empresariales. La gestión del conocimiento surge como una ventaja competitiva de tal forma que las entidades dedican parte de sus recursos a desarrollar su capacidad para compartir, crear y aplicar nuevos conocimientos de forma continuada a lo largo del tiempo. La tecnología, considerada el motor, el elemento central, en la Sociedad de la Información, pasa a convertirse en un soporte para el aprendizaje, para la transformación de conocimiento tácito en explícito, de conocimiento individual en grupal. Internet, las tecnologías de la información y la comunicación y, en particular, los sistemas de información pasan de ser elementos que guían el desarrollo de la sociedad a ser herramientas cuyo desarrollo está guiado por las necesidades de gestión del conocimiento y los procesos de aprendizaje. Los ecosistemas tecnológicos, considerados como la evolución de los sistemas de información tradicionales, se posicionan como sistemas de gestión del conocimiento que abarcan tanto la componente tecnológica como el factor humano. En el caso de que la gestión del conocimiento esté dirigida a apoyar fundamentalmente procesos de aprendizaje, el ecosistema tecnológico se puede denominar ecosistema de aprendizaje. La metáfora de ecosistema, que proviene del área de la biología, se utiliza en diferentes contextos para transmitir la naturaleza evolutiva de procesos, actividades y relaciones. El uso del concepto ecosistema natural se aplica al ámbito tecnológico para reflejar un conjunto de características o propiedades de los ecosistemas naturales que pueden transferirse a los ecosistemas tecnológicos o ecosistemas software con el fin de proporcionar soluciones, las cuales deben estar orientadas resolver los problemas de gestión del conocimiento. A su vez, estas soluciones tienen que adaptarse a los constantes cambios que sufre cualquier tipo de entidad o contexto en el que se despliega algún tipo de solución tecnológica. A pesar de las ventajas que ofrecen los ecosistemas tecnológicos, el desarrollo de este tipo de soluciones tiene una mayor complejidad que los sistemas de información tradicionales. A los problemas propios de la ingeniería del software, tales como la interoperabilidad de los componentes o la evolución del ecosistema, se unen la dificultad de gestionar un conocimiento complejo y la diversidad de personas involucradas. Los diferentes retos y problemas de los ecosistemas tecnológicos, y en particular de aquellos centrados en gestionar el conocimiento y el aprendizaje, requieren mejorar los procesos de definición y desarrollo de este tipo de soluciones tecnológicas. La presente tesis doctoral se centra en proporcionar un marco arquitectónico que permita mejorar la definición, el desarrollo y la sostenibilidad de los ecosistemas tecnológicos para el aprendizaje. Dicho marco estará compuesto, principalmente, por dos resultados asociados a esta investigación: un patrón arquitectónico que permita resolver los problemas detectados en ecosistemas de aprendizaje reales y un metamodelo de ecosistema de aprendizaje, basado en el patrón, que permita aplicar Ingeniería Dirigida por Modelos para sustentar la definición y el desarrollo de los ecosistemas de aprendizaje. Para llevar a cabo la investigación se han definido tres ciclos siguiendo el marco metodológico Investigación-Acción. El primer ciclo se ha centrado en el análisis de varios casos de estudio reales con el fin de obtener un modelo de dominio del problema. Se han analizado ecosistemas tecnológicos para la gestión del conocimiento y el aprendizaje desplegados en contextos heterogéneos, en particular, la Universidad de Salamanca, el grupo de investigación GRIAL y el proyecto europeo TRAILER (centrado en gestionar el conocimiento informal en instituciones y empresas). Como resultado de este ciclo se han detectado una serie de características que debe tener un ecosistema tecnológico y se ha definido un patrón arquitectónico que permite sentar las bases del ecosistema, dando solución a algunos de los problemas detectados y asegurando la flexibilidad y adaptabilidad de los componentes del ecosistema con el fin de permitir su evolución. El segundo ciclo se ha centrado en la mejora y validación del patrón arquitectónico. Los problemas detectados en el ciclo anterior se han modelado con la notación Business Process Model and Notation. Para ello, se han agrupado los problemas relacionados con procesos de gestión del conocimiento similares y posteriormente se ha realizado para cada conjunto de problemas un diagrama con un alto nivel de abstracción. Después, para cada uno de los diagramas, se han identificado una vez más los problemas a resolver y se ha definido un nuevo diagrama aplicando el patrón. Esto ha permitido validar el patrón arquitectónico y sentar las bases para su formalización. Por último, el tercer ciclo ha planteado el Desarrollo Dirigido por Modelos de ecosistemas tecnológicos para la gestión del conocimiento y el aprendizaje. En concreto, se ha definido un metamodelo de ecosistema de aprendizaje basado en el patrón arquitectónico planteado en el ciclo anterior. El metamodelo se ha validado a través de una serie de transformaciones modelo a modelo automatizadas mediante reglas de transformación. Para poder llevar a cabo dicho proceso, se ha definido un metamodelo específico de plataforma que proporciona un conjunto de recomendaciones, tanto tecnológicas como humanas, para implementar ecosistemas de aprendizaje basados en software open source. El metamodelo de ecosistema de aprendizaje y el metamodelo específico de plataforma para definir ecosistemas basados en software open source proporcionan las guías necesarias para definir ecosistemas de aprendizaje que resuelvan los principales problemas detectados en este tipo de soluciones software. Los tres casos de estudio reales que se han desarrollado para validar los resultados obtenidos a lo largo de los ciclos de Investigación-Acción, en especial, el patrón arquitectónico para modelar ecosistemas de aprendizaje, el metamodelo de ecosistema de aprendizaje y el metamodelo específico de plataforma para definir ecosistemas basados en software open source, permiten afirmar, como conclusión más general, que es posible mejorar la definición y el desarrollo de los ecosistemas tecnológicos enfocados en gestionar el conocimiento y los procesos de aprendizaje. Más concretamente, el uso de ingeniería dirigida por modelos, sustentada sobre una sólida propuesta arquitectónica, permite definir ecosistemas de aprendizaje que evolucionan y se adaptan a las necesidades cambiantes del entorno y de los usuarios, así como resolver un conjunto de problemas comunes identificado en este tipo de soluciones tecnológicas
    corecore