239 research outputs found

    An ultra-lightweight Java interpreter for bridging CS1

    Get PDF

    Pyro: A Python-based Versatile Programming Environment for Teaching Robotics

    Get PDF
    In this paper we describe a programming framework called Pyro which provides a set of abstractions that allows students to write platform­independent robot programs. This project is unique because of its focus on the pedagogical implications of teaching mobile robotics via a top­down approach. We describe the background of the project, novel abstractions created, its library of objects, and the many learning modules that have been created from which curricula for different types of courses can be drawn. Finally, we explore Pyro from the students\u27 perspective in a case study

    Pyro: A Python-based Versatile Programming Environment for Teaching Robotics

    Get PDF
    In this paper we describe a programming framework called Pyro which provides a set of abstractions that allows students to write platform­independent robot programs. This project is unique because of its focus on the pedagogical implications of teaching mobile robotics via a top­down approach. We describe the background of the project, novel abstractions created, its library of objects, and the many learning modules that have been created from which curricula for different types of courses can be drawn. Finally, we explore Pyro from the students\u27 perspective in a case study

    Using elementary patterns to analyse Scratch programs.

    Get PDF
    Teaching programming to school children is a challenging task, and this re- search contributes in two dimensions. First, it explores issues around “code smells,” such as object naming, long and repeated code, and unused and illogical code, in relation to block-based languages. Second, the suitability of “elementary patterns” as a potential teaching pedagogy to overcome the issues caused by code smells is investigated at a large scale. Elementary patterns such as Whether-or-Not, Alternative-Action, Linear-Search, and Loop-and-a- Half provide a structured approach to teaching programming using recommended practices based on experience gained through worked solutions. Elementary patterns are used as a benchmark in each of the studies re- ported in this thesis: finding code smells in students’ work, analysing the frequency of patterns in users’ projects, measuring progression in skills of Scratch users, the impact of remixing on learning, and evaluation of a selection of resources used for teaching programming. Millions of Scratch programs are analysed by software that reports on the various facets of the use of block-based languages, using programs posted to the online Scratch community as a sample. The results showed little use of modular approaches, infrequent use of variables and collections, and only very light usage of elementary patterns and programming elements in relation to problem solving in students’ work, even after a student has been program- ming in Scratch for many years. Remixing is one of the attractive features in Scratch that aims to support learning by collaboration, where students can take a copy of an existing project and develop it further themselves. The use of remixing was examined to evaluate if it leads to learning and plays any part in improving programming skills. There were no clear signs of progression in children’s depth of understanding with or without remixing. In principle the Scratch language can be used for students to explore elementary patterns, so we explore the teaching resources available in the community to see if they take advantage of this. We find that for novices, most resources covered only introductory ideas when evaluated as a means to teach the fundamentals of programming. This suggests a culture that has developed around Scratch, and potentially other block-based programming languages, that has led to them being regarded as a “toy” system and not taken seriously despite having the full power of programming. This does not necessarily mean that the programming that students do in Scratch is not worthwhile, but it gives some insight into how far most students progress, possibly moving to other languages to learn concepts that are nevertheless supported in Scratch

    Clickstream for learning analytics to assess students’ behavior with Scratch

    Get PDF
    The construction of knowledge through computational practice requires to teachers a substantial amount of time and effort to evaluate programming skills, to understand and to glimpse the evolution of the students and finally to state a quantitative judgment in learning assessment. The field of learning analytics has been a common practice in research since last years due to their great possibilities in terms of learning improvement. Both, Big and Small data techniques support the analysis cycle of learning analytics and risk of students’ failure prediction. Such possibilities can be a strong positive contribution to the field of computational practice such as programming. Our main objective was to help teachers in their assessments through to make those possibilities effective. Thus, we have developed a functional solution to categorize and understand students’ behavior in programming activities based in Scratch. Through collection and analysis of data generated by students’ clicks in Scratch, we proceed to execute both exploratory and predictive analytics to detect patterns in students’ behavior when developing solutions for assignments. We concluded that resultant taxonomy could help teachers to better support their students by giving real-time quality feedback and act before students deliver incorrectly or at least incomplete tasks.Peer ReviewedPostprint (author's final draft

    Android Implementation of a Visualisation, Sonification and AI-Assisted Interpretation of Neonatal EEG

    Get PDF
    Development of deep neural network models for detection of neonatal seizures. Implementation of the detection system as an Android application.The aim of this project is the implementation of an Android App to help healthcare professionals to check newborn health status by observing neonatal EEG signals, without having extensive training in EEG interpretation. To satisfy that aim, this project is divided in three blocks: AI-assisted neonatal EEG interpretation, EEG sonification and graphical user interface. The AI-assisted block has the function to detect neonatal seizures using a fully- convolutional deep neural network using the offline-trained existing model. The sonification work consisted of the adaptation of a previously developed algorithm, based on the phase vocoder, which was already implemented by another UPC student in the Android environment. The developed application core provides both sonification and AI detection functionalities, which are integrated in a user friendly graphical user interface.El objetivo de este proyecto era la implementación de una aplicación Android para ayudar a profesionales del ámbito médico a comprobar el estado de salud de neonatos en base a la observación del electroencefalograma (EEG), sin necesidad de tener mucha experiencia en el campo de la neonatología. Para cumplir dicho objetivo, el proyecto se ha dividido en tres bloques: interpretación asistida por IA, sonificación y interfaz de usuario gráfica. El bloque de IA se encarga de la detección de epilepsias en recién nacidos utilizando una red neuronal totalmente convolucional implementada en Android llevando a cabo la adaptación de un modelo ya existente en Python. El trabajo de sonificación del EEG ha consistido en la adaptación de un algoritmo basado en Phase Vocoder realizado por otro estudiante de la UPC La finalidad de la interfaz gráfica es mostrar de forma integrada la información recibida de la sonificación y la red neuronal para que el usuario pueda interpretarlas con facilidad, de forma que la aplicación resulte útil a un gran número de usuarios.L'objectiu d'aquest projecte era la implementació d'una aplicació Android per ajudar a professionals de l'àmbit mèdic a comprovar l'estat de salut de nounats en base a l'observació de l'electroencefalograma (EEG), sense necessitat de tenir molta experiència en neonatologia. Per tal d'acomplir aquest objectiu, el projecte s'ha dividit en tres blocs: interpretació assistida per IA, sonificació i interfície d'usuari gràfica. El bloc d'IA s'encarrega de la detecció d'epilèpsies en nadons utilitzant una xarxa neuronal totalment convolucional implementada en Android duent a terme l'adaptació d'un model ja existent programat en Python. El treball de sonificació de l'EEG ha consistit en l'adaptació d'un algoritme basat en Phase Vocoder realitzat per un altre estudiant de la UPC La finalitat de la interfície gràfica és mostrar de forma integrada la informació rebuda de la sonificació i la xarxa neuronal perquè l'usuari pugui interpretar-les amb facilitat, de manera que l'aplicació resulti útil a un gran nombre d'usuaris

    Morning or Evening? An Examination of Circadian Rhythms of CS1 Students

    Get PDF
    Circadian rhythms are the cycles of our internal clock that play a key role in governing when we sleep and when we are active. A related concept is chronotype, which is a person's natural tendency toward activity at certain times of day and typically governs when the individual is most alert and productive. In this work we investigate chronotypes in the setting of an Introductory Computer Programming (CS1) course. Using keystroke data collected from students we investigate the existence of chronotypes through unsupervised learning. The chronotypes we find align with those of typical populations reported in the literature and our results support correlations of certain chronotypes to academic achievement. We also find a lack of support for the still-popular stereotype of a computer programmer as a night owl. The analyses are conducted on data from two universities, one in the US and one in Europe, that use different teaching methods. In comparison of the two contexts, we look into programming assignment design and administration that may promote better programming practices among students in terms of procrastination and effort.Peer reviewe

    Praspel: Contract-Driven Testing for PHP using Realistic Domains

    Get PDF
    We present an integrated contract-based testing framework for PHP. It relies on a behavioral interface specification language called Praspel, for "PHP Realistic Annotation and Specification Language". Using Praspel developers can easily annotate their PHP scripts with formal contracts, namely class invariants, and method pre- and postconditions. These contracts describe assertions either by predicates or by assigning realistic domains to data. Realistic domains introduce types in PHP and describe complex structures frequently encountered in applications, such as email addresses or SQL queries. Realistic domains display two properties: predicability, which allows to check if a data belongs to a given realistic domain, and samplability, which allows to generate valid data. This paper introduces coverage criteria dedicated to contracts, designed to exhibit relevant behaviors of the annotated methods. Test data are then computed to satisfy these coverage criteria, by using dedicated data generators for complex realistic domains, such as arrays or strings. This framework has been implemented and disseminated within the PHP community, which gave us feedback on their usage of the tool and the relevance of this integrated process with respect to their practice of manual testing

    Systems for AutoML Research

    Get PDF
    corecore