113 research outputs found

    Ohjelman staattinen analyysi lajittelualgoritmien tunnistamiseksi

    Get PDF
    Automaattinen ohjelman analyysi ja ohjelmakoodin tunnistus on kiinnostava ongelma tietotekniikka-alalla. Syy tähän löytyy ohjelmistoteollisuudesta ja varsinkin ohjelmiston elinkaaren yhdestä vaiheesta: ylläpidosta. Automaattisella ohjelman ymmärtämisellä ja ohjelmakoodin tunnistuksella tarkoitetaan järjestelmää, joka voisi kertoa käyttäjälle, mitä syötteenä saatu ohjelma näyttäisi tekevän, mitä algoritmia se muistuttaa ja kuinka paljon tai millainen rakenne ja tyyli ohjelmalla on. Tällainen järjestelmä voi - hyvin ja laajasti kehitettynä - auttaa ohjelmistokehittäjiä ymmärtämään ylläpidettävän järjestelmän toimintaa ja säästämään heitä lukemasta ohjelmakoodia, joka on aikaa vievää toimintaa. Tällaisella järjestelmällä olisi käyttöä myös muissa ohjelmiston elinkaaren vaiheissa: järjestelmä voisi helpottaa ohjelmistokehittäjien työtä ohjelmiston verifiointi- ja validointitehtävissä huomattavasti. Kyseisestä järjestelmästä olisi apua myös yliopistoissa ja korkeakouluissa tarjolla olevien tietotekniikan kurssien yhteydessä suoritettavien tehtävien automaattisessa tarkastuksessa. Tietyt tietotekniikan kurssit ovat yleensä laajoja, ja niiden suorittaminen vaatii opiskelijoilta monen tehtävän suorittamista. Järjestelmä voisi ottaa vastaan opiskelijan lähettämän tiettyyn aiheeseen liittyvän tehtävän, ja kertoa sitten opettajalle, onko tehtävä ratkaistu oikein, ja jos ei, niin kuinka lähellä oikeaa ratkaisua se on. Tässä diplomityössä tutkitaan aikaisempia automaattiseen ohjelman analyysiin ja ohjelmakoodin tunnistukseen liittyviä töitä ja esitetään erilaisia lähestymistapoja ongelmaan. Uutena lähestymistapana esitetään mm ohjelmakoodissa käytettyjen muuttujien lukumäärään ja rooliin pohjautuva staattinen ohjelman analyysi ja koodin tunnistus. Tämä työ rajataan koskemaan ainoastaan tunnettuja lajittelualgoritmeja, ja järjestelmän jatkokehitys ja sen toiminnan laajentaminen muiden algoritmien käsittelemiseksi jätetään tulevalle tutkimukselle. Lopuksi kerrotaan työn muista rajauksista ja esitetään muutama ehdotus tulevalle tutkimukselle

    A study of novice programmer performance and programming pedagogy.

    Get PDF
    Identifying and mitigating the difficulties experienced by novice programmers is an active area of research that has embraced a number of research areas. The aim of this research was to perform a holistic study into the causes of poor performance in novice programmers and to develop teaching approaches to mitigate them. A grounded action methodology was adopted to enable the primary concepts of programming cognitive psychology and their relationships to be established, in a systematic and formal manner. To further investigate novice programmer behaviour, two sub-studies were conducted into programming performance and ability. The first sub-study was a novel application of the FP-Tree algorithm to determine if novice programmers demonstrated predictable patterns of behaviour. This was the first study to data mine programming behavioural characteristics rather than the learner’s background information such as age and gender. Using the algorithm, patterns of behaviour were generated and associated with the students’ ability. No patterns of behaviour were identified and it was not possible to predict student results using this method. This suggests that novice programmers demonstrate no set patterns of programming behaviour that can be used determine their ability, although problem solving was found to be an important characteristic. Therefore, there was no evidence that performance could be improved by adopting pedagogies to promote simple changes in programming behaviour beyond the provision of specific problem solving instruction. A second sub-study was conducted using Raven’s Matrices which determined that cognitive psychology, specifically working memory, played an important role in novice programmer ability. The implication was that programming pedagogies must take into consideration the cognitive psychology of programming and the cognitive load imposed on learners. Abstracted Construct Instruction was developed based on these findings and forms a new pedagogy for teaching programming that promotes the recall of abstract patterns while reducing the cognitive demands associated with developing code. Cognitive load is determined by the student’s ability to ignore irrelevant surface features of the written problem and to cross-reference between the problem domain and their mental program model. The former is dealt with by producing tersely written exercises to eliminate distractors, while for the latter the teaching of problem solving should be delayed until the student’s program model is formed. While this does delay the development of problem solving skills, the problem solving abilities of students taught using this pedagogy were found to be comparable with students taught using a more traditional approach. Furthermore, monitoring students’ understanding of these patterns enabled micromanagement of the learning process, and hence explanations were provided for novice behaviour such as difficulties using arrays, inert knowledge and “code thrashing”. For teaching more complex problem solving, scaffolding of practice was investigated through a program framework that could be developed in stages by the students. However, personalising the level of scaffolding required was complicated and found to be difficult to achieve in practice. In both cases, these new teaching approaches evolved as part of a grounded theory study and a clear progression of teaching practice was demonstrated with appropriate evaluation at each stage in accordance with action researc

    Guided instruction with Logo programming and the development of cognitive monitoring strategies among college students

    Get PDF
    As our society changes and becomes more complex, and as new knowledge and technology emerge, the need for teaching students to be independent thinkers and problem solvers increases more rapidly than ever before. Responding to the ever increasing societal demands, educators have sought for proper learning tools and methodologies to improve students\u27 higher-order thinking and problem solving skills. In particular, cognitive monitoring has been a primary concern of educators and cognitive psychologists. Cognitive monitoring has been regarded as one of the most important strategies in efficient thinking and problem solving. Logo programming has been considered a powerful tool to help students develop higher order thinking, an awareness of their thinking processes, and problem solving skills. Unfortunately, little evidence has been collected for the development of cognitive monitoring and problem solving through Logo programming;This research examined the effects of guided instruction with Logo programming on the development of cognitive monitoring strategies among college students. Guided instruction in this study involved three pedagogical elements. First, Logo programming was selected as a particular learning tool to teach cognitive monitoring strategies. Second, an explicit instructional model of cognitive monitoring processes was included in the process of solving Logo problems: decomposing, planning, executing, identifying errors, and debugging. Third, teacher mediated practice of cognitive monitoring activities was facilitated in a Logo programming environment as well as outside of the programming domain;The results of this study demonstrated positive effects of guided instruction with Logo programming on both near transfer and far transfer of cognitive monitoring strategies. The result also indicated that guided instruction contributed most significantly to the development of Logo error identification and debugging skills

    Explainable digital forensics AI: Towards mitigating distrust in AI-based digital forensics analysis using interpretable models

    Get PDF
    The present level of skepticism expressed by courts, legal practitioners, and the general public over Artificial Intelligence (AI) based digital evidence extraction techniques has been observed, and understandably so. Concerns have been raised about closed-box AI models’ transparency and their suitability for use in digital evidence mining. While AI models are firmly rooted in mathematical, statistical, and computational theories, the argument has centered on their explainability and understandability, particularly in terms of how they arrive at certain conclusions. This paper examines the issues with closed-box models; the goals; and methods of explainability/interpretability. Most importantly, recommendations for interpretable AI-based digital forensics (DF) investigation are proposed

    Uma comparação entre arquiteturas cognitivas : análise teórica e prática

    Get PDF
    Orientador: Ricardo Ribeiro GudwinDissertação (mestrado) - Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica e de ComputaçãoResumo: Este trabalho apresenta uma comparação teórica e prática entre três das mais populares arquiteturas cognitivas: SOAR, CLARION e LIDA. A comparação teórica é realizada com base em um conjunto de funções cognitivas supostamente existentes no ciclo cognitivo humano. A comparação prática é realizada aplicando-se um mesmo experimento em todas as arquiteturas, coletando alguns dados e comparando-as usando como base algumas métricas de qualidade de software. O objetivo é enfatizar semelhanças e diferenças entre os modelos e implementações, com o objetivo de aconselhar um novo usuário a escolher a arquitetura mais apropriada para uma certa aplicaçãoAbstract: This work presents a theoretical and practical comparison of three popular cognitive architectures: SOAR, CLARION, and LIDA. The theoretical comparison is performed based on a set of cognitive functions supposed to exist in the human cognitive cycle. The practical comparison is performed applying the same experiment in all architectures, collecting some data and comparing them using a set of software quality metrics as a basis. The aim is to emphasize similarities and differences among the models and implementations, with the purpose to advise a newcomer on how to choose the appropriated architecture for an applicationMestradoEngenharia de ComputaçãoMestre em Engenharia Elétric

    Automatic Algorithm Recognition Based on Programming Schemas and Beacons - A Supervised Machine Learning Classification Approach

    Get PDF
    In this thesis, we present techniques to recognize basic algorithms covered in computer science education from source code. The techniques use various software metrics, language constructs and other characteristics of source code, as well as the concept of schemas and beacons from program comprehension models. Schemas are high level programming knowledge with detailed knowledge abstracted out. Beacons are statements that imply specific structures in a program. Moreover, roles of variables constitute an important part of the techniques. Roles are concepts that describe the behavior and usage of variables in a program. They have originally been introduced to help novices learn programming. We discuss two methods for algorithm recognition. The first one is a classification method based on a supervised machine learning technique. It uses the vectors of characteristics and beacons automatically computed from the algorithm implementations of a training set to learn what characteristics and beacons can best describe each algorithm. Based on these observed instance-class pairs, the system assigns a class to each new input algorithm implementation according to its characteristics and beacons. We use the C4.5 algorithm to generate a decision tree that performs the task. In the second method, the schema detection method, algorithms are defined as schemas that exist in the knowledge base of the system. To identify an algorithm, the method searches the source code to detect schemas that correspond to those predefined schemas. Moreover, we present a method that combines these two methods: it first applies the schema detection method to extract algorithmic schemas from the given program and then proceeds to the classification method applied to the schema parts only. This enhances the reliability of the classification method, as the characteristics and beacons are computed only from the algorithm implementation code, instead of the whole given program. We discuss several empirical studies conducted to evaluate the performance of the methods. Some results are as follows: evaluated by leave-one-out cross-validation, the estimated classification accuracy for sorting algorithms is 98,1%, for searching, heap, basic tree traversal and graph algorithms 97,3% and for the combined method (on sorting algorithms and their variations from real student submissions) 97,0%. For the schema detection method, the accuracy is 88,3% and 94,1%, respectively. In addition, we present a study for categorizing student-implemented sorting algorithms and their variations in order to find problematic solutions that would allow us to give feedback on them. We also explain how these variations can be automatically recognized

    Models and evaluation of human-machine systems

    Get PDF
    "September 1993.""Prepared for: International Atomic Energy Association [sic], Wagramerstrasse 5, P. 0. Box 100 A-1400 Vienna, Austria."Part of appendix A and bibliography missingIncludes bibliographical referencesThe field of human-machine systems and human-machine interfaces is very multidisciplinary. We have to navigate between the knowledge waves brought by several areas of the human learning: cognitive psychology, artificial intelligence, philosophy, linguistics, ergonomy, control systems engineering, neurophysiology, sociology, computer sciences, among others. At the present moment, all these disciplines seek to be close each other to generate synergy. It is necessary to homogenize the different nomenclatures and to make that each one can benefit from the results and advances found in the other. Accidents like TMI, Chernobyl, Challenger, Bhopal, and others demonstrated that the human beings shall deal with complex systems that are created by the technological evolution more carefully. The great American writer Allan Bloom died recently wrote in his book 'The Closing of the American Mind' (1987) about the universities curriculum that are commonly separated in tight departments. This was a necessity of the industrial revolution that put emphasis in practical courses in order to graduate specialists in many fields. However, due the great complexity of our technological world, we feel the necessity to integrate again those disciplines that one day were separated to make possible their fast development. This Report is a modest trial to do this integration in a holistic way, trying to capture the best tendencies in those areas of the human learning mentioned in the first lines above. I expect that it can be useful to those professionals who, like me, would desire to build better human-machine systems in order to avoid those accidents also mentioned above

    A Syntactical Reverse Engineering Approach to Fourth Generation Programming Languages Using Formal Methods

    Get PDF
    Fourth-generation programming languages (4GLs) feature rapid development with minimum configuration required by developers. However, 4GLs can suffer from limitations such as high maintenance cost and legacy software practices. Reverse engineering an existing large legacy 4GL system into a currently maintainable programming language can be a cheaper and more effective solution than rewriting from scratch. Tools do not exist so far, for reverse engineering proprietary XML-like and model-driven 4GLs where the full language specification is not in the public domain. This research has developed a novel method of reverse engineering some of the syntax of such 4GLs (with Uniface as an exemplar) derived from a particular system, with a view to providing a reliable method to translate/transpile that system's code and data structures into a modern object-oriented language (such as C\#). The method was also applied, although only to a limited extent, to some other 4GLs, Informix and Apex, to show that it was in principle more broadly applicable. A novel testing method that the syntax had been successfully translated was provided using 'abstract syntax trees'. The novel method took manually crafted grammar rules, together with Encapsulated Document Object Model based data from the source language and then used parsers to produce syntactically valid and equivalent code in the target/output language. This proof of concept research has provided a methodology plus sample code to automate part of the process. The methodology comprised a set of manual or semi-automated steps. Further automation is left for future research. In principle, the author's method could be extended to allow the reverse engineering recovery of the syntax of systems developed in other proprietary 4GLs. This would reduce time and cost for the ongoing maintenance of such systems by enabling their software engineers to work using modern object-oriented languages, methodologies, tools and techniques
    corecore