scispace - formally typeset
Search or ask a question
Author

Jaime Spacco

Bio: Jaime Spacco is an academic researcher from Knox College. The author has contributed to research in topics: Peer instruction & Java. The author has an hindex of 20, co-authored 45 publications receiving 1522 citations. Previous affiliations of Jaime Spacco include Colgate University & University of Maryland, College Park.

Papers
More filters
Proceedings ArticleDOI
04 Jul 2015
TL;DR: An overview of the body of knowledge regarding the use of educational data mining and learning analytics focused on the teaching and learning of programming is provided and a novel taxonomy to analyse replicating studies is introduced.
Abstract: Educational data mining and learning analytics promise better understanding of student behavior and knowledge, as well as new information on the tacit factors that contribute to student actions. This knowledge can be used to inform decisions related to course and tool design and pedagogy, and to further engage students and guide those at risk of failure. This working group report provides an overview of the body of knowledge regarding the use of educational data mining and learning analytics focused on the teaching and learning of programming. In a literature survey on mining students' programming processes for 2005-2015, we observe a significant increase in work related to the field. However, the majority of the studies focus on simplistic metric analysis and are conducted within a single institution and a single course. This indicates the existence of further avenues of research and a critical need for validation and replication to better understand the various contributing factors and the reasons why certain results occur. We introduce a novel taxonomy to analyse replicating studies and discuss the importance of replicating and reproducing previous work. We describe what is the state of the art in collecting and sharing programming data. To better understand the challenges involved in replicating or reproducing existing studies, we report our experiences from three case studies using programming data. Finally, we present a discussion of future directions for the education and research community.

272 citations

Journal ArticleDOI
26 Jun 2006
TL;DR: The initial experiences using Marmoset in several introductory computer science courses are described, from the perspectives of both instructors and students, to study and better understand the development process of students.
Abstract: We developed Marmoset, an automated submission and testing system, to explore techniques to provide improved feedback to both students and instructors as students work on programming assignments, and to collect data to perform detailed research on the development processes of students. To address the issue of feedback, Marmoset provides students with limited access to the results of the instructor's private test cases using a novel token-based incentive system. This both encourages students to start their work early and to think critically about their work. Because students submit early, instructors can monitor all students' progress on test cases, helping identify challenging or ambiguous test cases early in order to update the project specification or devote additional time in lecture or lab sessions to the difficult test cases.To study and better understand the development process of students, Marmoset can be configured to transparently capture snapshots to a central repository everytime students save their files. These detailed development histories offer a unique, detailed perspective of each student's progress on a programming assignment, from the first line of code written and saved all the way through the final edit before the final submission. This type of data has proven extremely valuable many uses, such as mining new bug patterns and evaluating existing bug-finding tools.In this paper, we describe our initial experiences using Marmoset in several introductory computer science courses, from the perspectives of both instructors and students. We also describe some initial research results from analyzing the student snapshot database.

177 citations

Proceedings ArticleDOI
06 Mar 2013
TL;DR: This paper compares 2 sections of a non-majors CS0 course offered in the same term, by the same instructor, covering the same content and utilizing the same book, labs and exams to find a main effect of instructional method on final exam grade.
Abstract: In this paper we look at the impact on student learning of how a class is taught. We compare 2 sections of a non-majors CS0 course offered in the same term, by the same instructor, covering the same content and utilizing the same book, labs and exams. One section was taught using standard lecture practices including lecture from slides, live coding and weekly quizzes. The other section was taught using the Peer Instruction (PI) method that actively engages students in constructing their own learning, instead of absorbing understanding from the instructor's explanations. Using a factorial analysis of variance, we find a main effect of instructional method on final exam grade (F (1,200) = 5.87, p = 0.016) with students in the Peer Instruction section scoring an average 5.7% higher than in the standard lecture practices section. We find no significant interactions among gender and grade or class status (lower or upper division) and grade. In a separate analysis, we also find the interaction of instructional method and high school background to be significant (F (1,147) = 7.48, p = 0.007). In discussion we consider the meaning of these results for educators and describe questions for future work.

107 citations

Journal ArticleDOI
05 Sep 2005
TL;DR: It is shown that simple analysis techniques can be used to identify many software defects, both in production code and in student code, and are able to pinpoint 50% to 80% of the defects leading to a null pointer exception at runtime.
Abstract: Using static analysis to detect memory access errors, such as null pointer dereferences, is not a new problem. However, much of the previous work has used rather sophisticated analysis techniques in order to detect such errors.In this paper we show that simple analysis techniques can be used to identify many such software defects, both in production code and in student code. In order to make our analysis both simple and effective, we use a non-standard analysis which is neither complete nor sound. However, we find that it is effective at finding an interesting class of software defects.We describe the basic analysis we perform, as well as the additional errors we can detect using techniques such as annotations and inter-procedural analysis.In studies of both production software and student projects, we find false positive rates of around 20% or less. In the student code base, we find that our static analysis techniques are able to pinpoint 50% to 80% of the defects leading to a null pointer exception at runtime.

106 citations

Proceedings ArticleDOI
20 Jul 2008
TL;DR: Improvements to the SZZ algorithm are outlined, including replacing annotation graphs with line-number maps that track unique source lines as they change over the lifetime of the software; and DiffJ, a Java syntax-aware diff tool, is used to ignore comments and formatting changes in the source.
Abstract: Automatically identifying commits that induce fixes is an important task, as it enables researchers to quickly and efficiently validate many types of software engineering analyses, such as software metrics or models for predicting faulty components. Previous work on SZZ, an algorithm designed by Sliwerski et al and improved upon by Kim et al, provides a process for automatically identifying the fix-inducing predecessor lines to lines that are changed in a bug-fixing commit. However, as of yet no one has verified that the fix-inducing lines identified by SZZ are in fact responsible for introducing the fixed bug. Also, the SZZ algorithm relies on annotation graphs, which are imprecise in the face of large blocks of modified code, for back-tracking through previous revisions to the fix-inducing change.In this work we outline several improvements to the SZZ algorithm: First, we replace annotation graphs with line-number maps that track unique source lines as they change over the lifetime of the software; and second, we use DiffJ, a Java syntax-aware diff tool, to ignore comments and formatting changes in the source. Finally, we begin verifying how often a fix-inducing change identified by SZZ is the true source of a bug.

106 citations


Cited by
More filters
Journal Article
TL;DR: AspectJ as mentioned in this paper is a simple and practical aspect-oriented extension to Java with just a few new constructs, AspectJ provides support for modular implementation of a range of crosscutting concerns.
Abstract: Aspect] is a simple and practical aspect-oriented extension to Java With just a few new constructs, AspectJ provides support for modular implementation of a range of crosscutting concerns. In AspectJ's dynamic join point model, join points are well-defined points in the execution of the program; pointcuts are collections of join points; advice are special method-like constructs that can be attached to pointcuts; and aspects are modular units of crosscutting implementation, comprising pointcuts, advice, and ordinary Java member declarations. AspectJ code is compiled into standard Java bytecode. Simple extensions to existing Java development environments make it possible to browse the crosscutting structure of aspects in the same kind of way as one browses the inheritance structure of classes. Several examples show that AspectJ is powerful, and that programs written using it are easy to understand.

2,947 citations

Proceedings ArticleDOI
28 Oct 2010
TL;DR: It is stated that too many new systems are developed, but also acknowledge the current reasons for the phenomenon, and encourages opening up the existing systems and joining efforts on developing those further.
Abstract: This paper presents a systematic literature review of the recent (2006--2010) development of automatic assessment tools for programming exercises. We discuss the major features that the tools support and the different approaches they are using both from the pedagogical and the technical point of view. Examples of these features are ways for the teacher to define tests, resubmission policies, security issues, and so forth. We have also identified a list of novel features, like assessing web software, that are likely to get more research attention in the future. As a conclusion, we state that too many new systems are developed, but also acknowledge the current reasons for the phenomenon. As one solution we encourage opening up the existing systems and joining efforts on developing those further. Selected systems from our survey are briefly described in Appendix A.

499 citations

Journal ArticleDOI
TL;DR: FindBugs evaluates what kinds of defects can be effectively detected with relatively simple techniques and helps developers understand how to incorporate such tools into software development.
Abstract: Static analysis examines code in the absence of input data and without running the code. It can detect potential security violations (SQL injection), runtime errors (dereferencing a null pointer) and logical inconsistencies (a conditional test that can't possibly be true). Although a rich body of literature exists on algorithms and analytical frameworks used by such tools, reports describing experiences in industry are much harder to come by. The authors describe FindBugs, an open source static-analysis tool for Java, and experiences using it in production settings. FindBugs evaluates what kinds of defects can be effectively detected with relatively simple techniques and helps developers understand how to incorporate such tools into software development.

494 citations

Journal ArticleDOI
TL;DR: This study is based on the analysis of 252 papers on learning analytics in higher education and finds that learning analytics can improve learning practice by transforming the ways the authors support learning processes.

349 citations

Proceedings ArticleDOI
21 May 2011
TL;DR: A noise detection and elimination algorithm to address the problem of noise in defect data and shows that the algorithm can identify noisy instances with reasonable accuracy and after eliminating the noises using the algorithm, defect prediction accuracy is improved.
Abstract: Many software defect prediction models have been built using historical defect data obtained by mining software repositories (MSR). Recent studies have discovered that data so collected contain noises because current defect collection practices are based on optional bug fix keywords or bug report links in change logs. Automatically collected defect data based on the change logs could include noises. This paper proposes approaches to deal with the noise in defect data. First, we measure the impact of noise on defect prediction models and provide guidelines for acceptable noise level. We measure noise resistant ability of two well-known defect prediction algorithms and find that in general, for large defect datasets, adding FP (false positive) or FN (false negative) noises alone does not lead to substantial performance differences. However, the prediction performance decreases significantly when the dataset contains 20%-35% of both FP and FN noises. Second, we propose a noise detection and elimination algorithm to address this problem. Our empirical study shows that our algorithm can identify noisy instances with reasonable accuracy. In addition, after eliminating the noises using our algorithm, defect prediction accuracy is improved.

329 citations