56,740 research outputs found

    Semi Automated Partial Credit Grading of Programming Assignments

    Get PDF
    The grading of student programs is a time consuming process. As class sizes continue to grow, especially in entry level courses, manually grading student programs has become an even more daunting challenge. Increasing the difficulty of grading is the needs of graphical and interactive programs such as those used as part of the UNH Computer Science curriculum (and various textbooks). There are existing tools that support the grading of introductory programming assignments (TAME and Web-CAT). There are also frameworks that can be used to test student code (JUnit, Tester, and TestNG). While these programs and frameworks are helpful, they have little or no no support for programs that use real data structures or that have interactive or graphical features. In addition, the automated tests in all these tools provide only “all or nothing” evaluation. This is a significant limitation in many circumstances. Moreover, there is little or no support for dynamic alteration of grading criteria, which means that refactoring of test classes after deployment is not easily done. Our goal is to create a framework that can address these weaknesses. This framework needs to: 1. Support assignments that have interactive and graphical components. 2. Handle data structures in student programs such as lists, stacks, trees, and hash tables. 3. Be able to assign partial credit automatically when the instructor can predict errors in advance. 4. Provide additional answer clustering information to help graders identify and assign consistent partial credit for incorrect output that was not predefined. Most importantly, these tools, collectively called RPM (short for Rapid Program Management), should interface effectively with our current grading support framework without requiring large amounts of rewriting or refactoring of test code

    Is the Stack Distance Between Test Case and Method Correlated With Test Effectiveness?

    Full text link
    Mutation testing is a means to assess the effectiveness of a test suite and its outcome is considered more meaningful than code coverage metrics. However, despite several optimizations, mutation testing requires a significant computational effort and has not been widely adopted in industry. Therefore, we study in this paper whether test effectiveness can be approximated using a more light-weight approach. We hypothesize that a test case is more likely to detect faults in methods that are close to the test case on the call stack than in methods that the test case accesses indirectly through many other methods. Based on this hypothesis, we propose the minimal stack distance between test case and method as a new test measure, which expresses how close any test case comes to a given method, and study its correlation with test effectiveness. We conducted an empirical study with 21 open-source projects, which comprise in total 1.8 million LOC, and show that a correlation exists between stack distance and test effectiveness. The correlation reaches a strength up to 0.58. We further show that a classifier using the minimal stack distance along with additional easily computable measures can predict the mutation testing result of a method with 92.9% precision and 93.4% recall. Hence, such a classifier can be taken into consideration as a light-weight alternative to mutation testing or as a preceding, less costly step to that.Comment: EASE 201

    Provably Correct Control-Flow Graphs from Java Programs with Exceptions

    Get PDF
    We present an algorithm to extract flow graphs from Java bytecode, focusing on exceptional control flows. We prove its correctness, meaning that the behaviour of the extracted control-flow graph is an over-approximation of the behaviour of the original program. Thus any safety property that holds for the extracted control-flow graph also holds for the original program. This makes control-flow graphs suitable for performing different static analyses. For precision and efficiency, the extraction is performed in two phases. In the first phase the program is transformed into a BIR program, where BIR is a stack-less intermediate representation of Java bytecode; in the second phase the control-flow graph is extracted from the BIR representation. To prove the correctness of the two-phase extraction, we also define a direct extraction algorithm, whose correctness can be proven immediately. Then we show that the behaviour of the control-flow graph extracted via the intermediate representation is an over-approximation of the behaviour of the directly extracted graphs, and thus of the original program

    Building distributed heterogeneous smart phone Java applications an evaluation from a development perspective

    Get PDF
    The advances in mobile phone technology have enabled such devices to be programmed to run general-purpose applications using a special edition of the Java programming language. Java is designed to be a heterogeneous programming language targeting different platforms. Such ability when coupled with the provision of high-speed mobile Internet access would open the door for a new breed of distributed mobile applications. This paper explores the capabilities and limitations of this technology and addresses the considerations that must be taken when designing and developing such distributed applications. Our findings are verified by building a test client-server system where the clients in this system are mobile phones behaving as active processing elements not just mere service requesters

    Teaching Concurrent Software Design: A Case Study Using Android

    Full text link
    In this article, we explore various parallel and distributed computing topics from a user-centric software engineering perspective. Specifically, in the context of mobile application development, we study the basic building blocks of interactive applications in the form of events, timers, and asynchronous activities, along with related software modeling, architecture, and design topics.Comment: Submitted to CDER NSF/IEEE-TCPP Curriculum Initiative on Parallel and Distributed Computing - Core Topics for Undergraduate

    Keberkesanan carta pembelajaran Omygram terhadap tahap pencapaian pelajar PVMA dalam mata pelajaran Bahasa Inggeris bagi topik plurals

    Get PDF
    Pembinaan bahan bantu belajar untuk tujuan PdPC sememangnya digalakkan oleh Kementerian Pendidikan Malaysia bagi meningkatkan kualiti pendidikan. Kajian ini bertujuan untuk membangun dan mengenalpasti keberkesanan carta pembelajaran Omygram terhadap tahap pencapaian pelajar PVMA dalam mata pelajaran Bahasa Inggeris bagi topik plurals. Kajian ini adalah kuasi-eksperimen yang melibatkan dua buah sekolah menengah harian di daerah Batu Pahat. Instrumen kajian yang digunakan ialah soalan ujian pra dan pasca, soal selidik dan senarai semak. Dapatan kajian telah dianalisis menggunakan perisian Statistic Package For The Social Science Version 22.0 (SPSS). Analisis deskriptif dalam bentuk frekuensi, peratus, min dan sisihan piawai digunakan semasa penganalisaan data. Ujian-t pula digunakan untuk melihat perbezaan pencapaian antara ujian pra dengan ujian pasca bagi kumpulan rawatan dan kumpulan kawalan. Kumpulan rawatan diberi set soal selidik tentang motivasi pelajar selepas menggunakan carta pembelajaran Omygram dalam PdPC. Hasil dapatan kajian mendapati bahawa, terdapat perbezaan pencapaian yang signifikan antara skor ujian pra dengan skor ujian pasca bagi kumpulan rawatan. Motivasi pelajar selepas menggunakan carta pembelajaran Omygram juga berada pada tahap tinggi

    Testing Java ME Applications

    Get PDF
    Today, mobile applications have a wide use and their development is growing fast. Testing mobile applications is an important aspect of their development, keeping in mind the importance of these applications and their specific characteristics. In this paper are shown the main aspects of testing the mobile applications, focusing on unit testing of Java ME applications.mobile applications, mobile devices, software testing, WAP, Java ME, Junit

    Automatic Repair of Real Bugs: An Experience Report on the Defects4J Dataset

    Full text link
    Defects4J is a large, peer-reviewed, structured dataset of real-world Java bugs. Each bug in Defects4J is provided with a test suite and at least one failing test case that triggers the bug. In this paper, we report on an experiment to explore the effectiveness of automatic repair on Defects4J. The result of our experiment shows that 47 bugs of the Defects4J dataset can be automatically repaired by state-of- the-art repair. This sets a baseline for future research on automatic repair for Java. We have manually analyzed 84 different patches to assess their real correctness. In total, 9 real Java bugs can be correctly fixed with test-suite based repair. This analysis shows that test-suite based repair suffers from under-specified bugs, for which trivial and incorrect patches still pass the test suite. With respect to practical applicability, it takes in average 14.8 minutes to find a patch. The experiment was done on a scientific grid, totaling 17.6 days of computation time. All their systems and experimental results are publicly available on Github in order to facilitate future research on automatic repair
    corecore