Jaime Spacco

dblp:67/379 · DBLP profile ↗
← Back
32ranked-venue papers
4as first author
6since 2021 · last 2026
0000-0001-6955-0754ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Human-computer interaction and ubiquitous computing · 27 · 3 first-author · 6 since 2021Software engineering, systems software and programming languages · 5 · 1 first-authorDatabases, data management, data science and information retrieval · 1
YearPublicationVenuePosition
2026 Modernizing the Introductory Computing Sequence: Integrating Parallel and Distributed Computing in CS1 and CS2
abstract
The rapid evolution of computing demands curricula that reflect modern practices, yet many CS1 and CS2 courses continue to emphasize only sequential programming. This NSF-funded project addresses that gap by designing and disseminating exemplar CS1 and CS2 courses that integrate parallel, distributed, and event-driven computing as core concepts. The materials include unplugged activities and programming labs for both C++ and Java. To ensure broad applicability and adoption, development occurred in collaboration with instructors from six diverse institutions who are now implementing the materials. Evaluation includes surveys, assignment-specific instruments, and cross-team analysis. This poster presents the project’s vision, methods, and resources, highlighting how others can adopt and adapt them to teach modern computing.
April Renee Crockett, David P. Bunde, Gerald C. Gannod, Sushil K. Prasad, Jaime Spacco, Alan Sussman, Neena Thota, Charles C. Weems, Ramachandran Vaidyanathan
SIGCSE (2)5
2026 Envisioning CS1 and CS2: The Future of Introductory Problem Solving and Programming
abstract
Computer Science education, and all education for that matter, is being disrupted by Generative AI. While there have been few truly transformational technologies similar to AI, other incremental but impactful advances have helped shape the computing ecosystem. Other recent examples include the transition to multicore systems (requiring the promotion of parallel computing from an elective topic), the shift to graphical interfaces (raising expectations for assignments and motivating the creation of Media Computation), and the emergence of object-oriented programming. In this Birds of a Feather Session, we ask the question ''How might we redesign our CS1 and CS2 courses to better prepare students for emerging and future computing paradigms while maintaining strong foundations in problem solving, programming, and computational thinking?'' Using collaborative brainstorming techniques, participants will create a list of potential future paradigms (either disruptive or incremental) that are relevant to CS1/CS2, and develop proposed roadmaps that identify how those paradigms can be leveraged as contexts for teaching the existing CS1 and CS2 courses within the CS2023 curriculum.
Gerald C. Gannod, David P. Bunde, April Renee Crockett, Alan Sussman, Sushil K. Prasad, Charles C. Weems, Ramachandran Vaidyanathan, Suzanne Matthews, Jaime Spacco
SIGCSE (2)9
2026 Modernizing the CS Introductory Sequence with Parallel and Distributed Computing (and some AI)
abstract
Parallel and distributed computing (PDC) has become pervasive in all aspects of computing, and thus it is essential that students include parallelism and distribution in the computational thinking that they apply to problem solving, from the very beginning. Computer science education is still teaching a 20th century model of algorithmic problem solving, where sequence, branch, and loop are the only organizing principles needed for algorithms. We invest considerable time in showing how best to sequentially process large volumes of data. All computing devices that students use currently have multiple cores as well as a GPU in many cases. Most of their favorite applications use multiple cores and distributed resources. Often concurrency offers simpler solutions than sequential approaches. In this tutorial we overview key PDC concepts and provide examples of how they may naturally be incorporated in early computing classes. We lead participants through plugged and unplugged curriculum modules that have been successfully integrated and tested in existing computing classes at multiple institutions. We also discuss recent efforts at integrating AI methods, including LLMs, into early classes. In addition, we highlight other CDER activities for integration of PDC and AI into undergraduate computing curricula. Additional Information: No equipment or prior PDC experience is required, although a laptop that can run C++, Java and Python is recommended for following along with some code examples if desired.
Charles C. Weems, April Renee Crockett, David P. Bunde, Alan Sussman, Ramachandran Vaidyanathan, Sushil K. Prasad, Gerald C. Gannod, Jaime Spacco
SIGCSE (2)8
2025 Modernizing the CS Introductory Sequence with Parallel and Distributed Computing (and some AI)
abstract
Parallel and distributed computing (PDC) has become pervasive in all aspects of computing, so it is essential that students include parallelism and distribution in the computational thinking that they apply to problem solving, from the beginning of their computing education. With all computing devices that students use having multiple cores as well as a GPU in many cases, many students' favorite applications use multiple cores and/or distributed processors. However, we are still teaching them to solve problems using only sequential thinking. Why?
Alan Sussman, Sushil K. Prasad, David P. Bunde, Jaime Spacco, Gerald C. Gannod, April Renee Crockett, Ramachandran Vaidyanathan
SIGCSE (2)4
2024 WIP: Updating CS1 to a 21st-Century Model of Computing
abstract
This work in progress innovative practice paper documents ways in which current introductory computing courses are designed for an earlier generation of computers. We describe our plans for updating these courses for modern systems and programming practices and share details of the development of exemplar courses that will be adoptable by diverse institutions and programs teaching introductory programming courses.
David P. Bunde, April Renee Crockett, Gerald C. Gannod, Jaime Spacco, Neena Thota, Charles C. Weems
FIE4
2023 Spiffy Peer Instruction Questions
abstract
This session takes inspiration from the highly successful "Nifty Assignments" special session, but instead highlights high quality multiple-choice questions that can be used for Peer Instruction. Peer Instruction is a pedagogical practice characterized by asking students to answer challenging, conceptual questions in class. For each question, students individually respond, discuss the question in small groups, and respond again based on their new understanding. Peer Instruction has been widely identified as an important instructional technique in teaching computing. In this session, members of the community will present some of their best Peer Instruction questions along with a short explanation that provides the pedagogical content knowledge indicating why the question is a good question. If you are interested in learning more about Peer Instruction or finding new questions for your course(s), this session is for you.
Craig B. Zilles, David P. Bunde, Jaime Spacco, Cynthia Bailey, Leo Porter 0001, Cynthia Bagier Taylor
SIGCSE (2)3
2018 A multi-institution exploration of peer instruction in practice
abstract
Peer Instruction (PI) is an active learning pedagogy that has been shown to improve student outcomes in computing, including lower failure rates, higher exam scores, and better retention in the CS major. PI's key classroom mechanism is the PI question: a formative multiple choice question on which students vote, then discuss, then vote again. While research indicates that PI questions lead to learning gains for students, relatively little is known about the questions themselves and how faculty employ them. Additionally, much of the work has examined PI data collected by researchers operating in a quasi-experimental setting. We examine data collected incidentally by multiple instructors using PI as a pedagogical technique in their classroom. We look at how many questions instructors use in their courses, the difficulty level of the questions, and normalized gain, a metric that looks at increases in student correctness between individual and group votes. We find normalized gain levels similar to those in existing literature, indicating that students are learning, and that most questions, even those developed by instructors new to PI, fall within recommended difficulty levels, indicating instructors can create good PI questions with little training. We also find that instructors add PI questions over the first several iterations of a new PI course, showing that they find PI questions valuable and suggesting that full development of PI materials for a course may take multiple semesters.
Cynthia Bagier Taylor, Jaime Spacco, David P. Bunde, Andrew Petersen 0001, Soohyun Nam Liao, Leo Porter 0001
ITiCSE2
2018 Promoting the adoption of educational innovations
abstract
Most projects that create innovations in Computer Science education, whether they be changes to content or pedagogy, focus on first developing materials and then proving effectiveness. For educational innovations to have impact, however, they must be adopted by other instructors. Getting instructors to use new educational strategies is a significant challenge, with most new techniques never obtaining widespread adoption. Researchers who do consider dissemination of their research frequently use techniques such as publications and workshops, which are known to be insufficient.
Cynthia Bagier Taylor, Jaime Spacco, David P. Bunde, Thomas Zeume, Zack J. Butler, Martina Barnas, Heather Bort, Francesco Maiorana, Christopher Lynnly Hovey
ITiCSE2
2018 A Multi-Institution Exploration of Peer Instruction in Practice: (Abstract Only)
abstract
Peer Instruction is an active learning pedagogy that has been shown to improve student outcomes in computing, including lower failure rates, higher exam scores, and better retention in the CS major. A key classroom mechanism for Peer Instruction is the "clicker question": a formative multiple-choice question on which students vote, then discuss, then vote again. While research indicates that clicker questions lead to learning gains for students, relatively little is known about the questions themselves and how faculty employ them. Additionally, much of the work has examined clicker data collected by CS Education researchers operating in a quasi-experimental setting. In this project, we examine clicker data collected incidentally by multiple instructors using clickers as a pedagogical technique in their classroom. This work represents a first effort to systematically evaluate how instructors use clicker questions, including how many clicker questions are used in a course, how difficult the questions used are, and whether instructors add or modify questions over time.
David P. Bunde, Cynthia Bagier Taylor, Jaime Spacco, Andrew Petersen 0001, Soohyun Nam Liao, Leo Porter 0001
SIGCSE3
2018 Peer Instruction: Tips, Techniques and Resources (Abstract Only)
abstract
Peer Instruction (PI) is an active learning technique with over 25 years of research supporting its efficacy. Documented benefits in CS include lower WDF rates, higher exam scores, and improved retention in the CS major. One key difference between PI and traditional lecture is the use of "clicker questions" in class to challenge students' conceptual understanding. Students discuss and answer these questions in small groups before the instructor goes over the question with the entire class. This BoF is for both those using PI and those interested in starting. Attendees will meet other PI practitioners, discuss tips and tricks, and exchange materials. We will provide pointers to PI materials for a variety of courses, including CS1 & CS2, Machine Organization, Programming Languages, OS and more.
Cynthia Bagier Taylor, Jaime Spacco, David P. Bunde, Joe Hummel, David Hovemeyer
SIGCSE2
2017 Progsnap: Sharing Programming Snapshots for Research (Abstract Only)
abstract
Recent years have seen increasing interest in using programming snapshot data for education research. One barrier to such research, especially for studies involving data from multiple institutions, is that the data is in a wide variety of native formats, and those formats may not be conducive to automated analysis. To overcome this barrier, we propose a structured data model and archival data format called Progsnap (https://cloudcoderdotorg.github.io/progsnap-spec/). Progsnap is designed to be a neutral export format, is currently supported by two open-source programming exercise systems, and we believe will be an easy target for data export from other systems. An open source Python library makes it easy to automate analysis of Progsnap datasets.
David Hovemeyer, Arto Hellas, Andrew Petersen 0001, Jaime Spacco
SIGCSE4
2017 Peer Instruction in Practice (Abstract Only)
abstract
Peer Instruction (PI) is an active learning technique with over 25 years of research supporting its efficacy in Physics Education. More recently, the CS Education community has found that the benefits of PI are true for CS as well, including lower WDF rates, higher exam scores, and improved retention in the CS major. One of the key differences between PI and traditional lecture is the use of a series of multiple choice "clicker questions" in class to challenge the students' conceptual understanding. Students discuss and answer these questions in small groups, then the instructor reviews why each choice was right or wrong with the entire class. The workshop is a practical look at the kinds of clicker questions used in PI. Attendees with see examples of some of our best and worst questions, and also work to design and improve some of their own questions. In addition, we will provide a demonstration of PI, and share our practical experiences in adopting PI in a wide variety of class sizes.
Cynthia Bagier Taylor, Joe Hummel, David Hovemeyer, David P. Bunde, John F. Dooley, Jaime Spacco
SIGCSE6
2016 Control-Flow-Only Abstract Syntax Trees for Analyzing Students' Programming Progress
abstract
The abstraction of student code for use in automated analysis is a key challenge. The code must be processed in a manner that reveals interesting properties while reducing the "noise" introduced by less important details. In this work, we investigate the importance of control flow as a property in the analysis of students' programming processes.
David Hovemeyer, Arto Hellas, Andrew Petersen 0001, Jaime Spacco
ICER4
2016 Peer Instruction in Computing: A Focus on Student Learning (Abstract Only)
abstract
Recent work in computing has converged on a collection of complementary findings suggesting the value of the Peer Instruction (PI) pedagogy. Compared to lecture, PI has been shown to decrease fail rates, increase final exam grades, and increase engagement and enjoyment. In PI, students work together to exchange perspectives and use clickers to answer challenging conceptual questions in the presence of a knowledgeable instructor.
Daniel Zingaro, Leo Porter 0001, Quintin I. Cutts, John Glick, Joe Hummel, Cynthia Bailey, Jaime Spacco
SIGCSE7
2015 Analyzing Student Work Patterns Using Programming Exercise Data
abstract
Web-based programming exercises are a useful way for students to practice and master essential concepts and techniques presented in introductory programming courses. Although these systems are used fairly widely, we have a limited understanding of how students use these systems, and what can be learned from the data collected by these systems.
Jaime Spacco, Paul Denny 0001, Brad Richards, David S. Babcock, David Hovemeyer, James Moscola, Robert C. Duvall
SIGCSE1
2015 Supporting New Adopters to Peer Instruction in Computing (Abstract Only)
abstract
Recent work in computing has converged on a collection of complementary findings suggesting the value of the Peer Instruction (PI) pedagogy. Compared to lecture, PI has been shown to decrease fail rates, increase final exam grades, and increase engagement and enjoyment. In PI, students work together to exchange perspectives and use clickers to answer challenging conceptual questions in the presence of a knowledgeable instructor.
Daniel Zingaro, Leo Porter 0001, Quintin I. Cutts, John Glick, Joe Hummel, Cynthia Bailey, Jaime Spacco
SIGCSE7
2014 Using and sharing programming exercises to improve introductory courses (abstract only)
abstract
Short, automatically-assessed programming exercises, and other types of short practice problems, are a useful way to introduce and reinforce concepts and techniques in introductory programming courses. When delivered over the web, they allow students to learn and practice, with immediate feedback, at any time and place where they have access to a web browser. However, such exercises do not seem to be as widely used as they could be. Similarly, there is not a lot of literature on the effectiveness of these types of problems. The purpose of this BOF is to bring together users (and potential users) of programming exercises with developers of programming exercise systems to discuss how exercises could be used more widely and effectively. Possible discussion topics include: What features are absolutely essential for faculty to consider adoption? What are the major obstacles preventing more widespread adoption? Are faculty willing to share their exercises under an open/non-commercial license? Should exercises best used for extra practice, as graded assignments, or both?
David Hovemeyer, Jaime Spacco, Robert C. Duvall, Stephen H. Edwards, Amruth N. Kumar, Andrew Petersen 0001, Daniel Zingaro
SIGCSE2
2013 An open platform for managing short programming exercises
abstract
In this paper, we describe CloudCoder, an open platform for creating, assigning, and sharing short programming exercises for a variety of languages (currently C/C++, Java, Python and Ruby). Like other similar systems, CloudCoder is web-based, letting students write code directly in a web browser, click the "submit" button, and receive immediate feedback. Unlike other systems, which tend to be closed, or commercial, or both, CloudCoder is a completely open platform. The code for the system is open-source, and exercises written for CloudCoder may be shared to a central repository under permissive licenses such as Creative Commons BY-SA. Finally, CloudCoder collects detailed data that faculty can use for educational research. We also report on successful pilot studies of CloudCoder at several institutions, and outline research questions we hope to address in future work.
Andrei Papancea, Jaime Spacco, David Hovemeyer
ICER2
2013 SnapViz: visualizing programming assignment snapshots
abstract
Many systems collect snapshots of student work, typically after each compile, save, or submission. Visualizing these work histories can yield valuable insights into patterns of student work, common error patterns, and so on. Currently each system must provide its own data visualization system, or must rely on external tools, such as R or Excel. However, the actual values stored in snapshot-based data sets are similar between systems, and, given agreement upon conventions, could be visualized with a common system. We have built a prototype web service called Snapviz. Snapviz displays snapshot data from tab-delimited data files uploaded by users.
Evan Balzuweit, Jaime Spacco
ITiCSE2
2013 Making the most of the assessment process
abstract
As part of Knox College's most recent accreditation visit by the North Central Association's Higher Learning Commission in 2010, the College was encouraged to increase its assessment activities across all departments on campus. The Department of Computer Science has been working on these assessment activities for the past two years, has created learning goals and worked with the Director of Assessment to create data gathering and evaluation plans and to begin to implement those plans. This poster is a report on those ongoing activities, what we have learned about ourselves, our students, and our graduates to date, and our overall opinion of assessment activities.
David P. Bunde, John F. Dooley, Jaime Spacco
ITiCSE3
2013 Towards improving programming habits to create better computer science course outcomes
abstract
We examine a large dataset collected by the Marmoset system in a CS2 course. The dataset gives us a richly detailed portrait of student behavior because it combines automatically collected program snapshots with unit tests that can evaluate the correctness of all snapshots. We find that students who start earlier tend to earn better scores, which is consistent with the findings of other researchers. We also detail the overall work habits exhibited by students. Finally, we evaluate how students use release tokens, a novel mechanism that provides feedback to students without giving away the code for the test cases used for grading, and gives students an incentive to start coding earlier. We find that students seem to use their tokens quite effectively to acquire feedback and improve their project score, though we do not find much evidence suggesting that students start coding particularly early.
Jaime Spacco, Davide Fossati, John C. Stamper, Kelly Rivers
ITiCSE1
2013 CloudCoder: building a community for creating, assigning, evaluating and sharing programming exercises (abstract only)
abstract
Automatically-tested online programming exercises can be useful in introductory programming courses as self-tests to accompany readings, for in-class assessment, for skills development, and to provide additional practice for students who need it. CloudCoder (http://cloudcoder.org) is an effort to build a community based on an open-source programming exercise system (currently supporting C, Java, and Python) tightly integrated with a repository of freely-redistributable programming exercises written and used by members of the community. The goal of the project is to make programming exercises easy and free to incorporate into any programming course.
David Hovemeyer, Matthew Hertz, Paul Denny 0001, Jaime Spacco, Andrei Papancea, John C. Stamper, Kelly Rivers
SIGCSE4
2013 How we teach impacts student learning: peer instruction vs. lecture in CS0
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.
Beth Simon, Julian Parris, Jaime Spacco
SIGCSE3
2012 What do computer scientists do?: a survey of CS and non-CS liberal arts faculty
abstract
We asked all of the liberal arts faculty who advise undergraduates on course selection at the 14 colleges in the Associated Colleges of the Midwest a series of questions regarding their perceptions of the personality traits of Computer Science (CS) students, topics they think are covered in CS classes, and their overall impressions of CS. Our goal was to assess empirically the hypotheses that (1) many non-CS faculty do not really know what computer science is, and (2) many non-CS faculty are unaware of the differences between CS and Information Technology (IT). We received over 250 survey responses, which revealed that, among non-CS faculty, only 9% disagree or are neutral that CS should even be part of a liberal arts curriculum, but 32% think CS students learn to administer computers and computer networks, while 34% believe that CS students are taught to use Microsoft products in the classroom. However, over 95% of non-CS faculty also recognize the importance of both programming and algorithms to the study of computer science. The overall data suggests that a majority of non-CS faculty in the Associated Colleges of the Midwest have a a basic understanding of CS, while the remainder have an overly broad definition of CS (i.e. they think that CS includes IT).
Hannah Fidoten, Jaime Spacco
ITiCSE2
2012 Do faculty recognize the difference between computer science and information technology?: a survey of liberal arts faculty (abstract only)
abstract
We asked all of the liberal arts faculty who advise undergraduates on course selection at the 14 colleges in the Associated Colleges of the Midwest a series of questions regarding their perceptions of the personality traits of Computer Science (CS) students, topics they think are covered in CS classes, and their overall impressions of CS. Our goal was to test empirically the hypothesis that many non-CS faculty are unaware of the differences between CS and Information Technology (IT). We received over 200 survey responses, which revealed that, among non-CS faculty, 10% disagree or are neutral that CS should even be part of a liberal arts curriculum, 9% think that CS students are taught to fix printers and other peripherals, and 35% believe that CS students are taught to use Microsoft Word and Excel in their courses. Our results also revealed that 60% of CS faculty believe that men are more interested in CS than are women (although we did not ask why they believe this to be the case). Overall, while we found statistically significant differences between the answers given by CS and non-CS faculty, the overall evidence suggests that the majority of non-CS faculty in the Associated Colleges of the Midwest have a good understanding of CS.
Hannah Fidoten, Jaime Spacco
SIGCSE2
2009 Lightweight Techniques for Tracking Unique Program Statements
abstract
Previous work on tracking source locations has focused on tracking lines through multiple revisions of software. In this paper, we explore a new technique for tracking statements, rather than lines, across multiple revisions of Java source code. We show that our statement-tracking technique achieves comparable accuracy for source code than the most accurate line-tracking techniques, while also safely handling all non-executable formatting changes, such as breaking a single statement across many lines, adding or removing whitespace, moving brackets, or re-ordering methods. Finally, we compare the performance of three of the current state-of-the-art techniques for tracking lines across revisions on a series of benchmarks, and discuss the strengths and weaknesses of each technique.
Jaime Spacco, Chadd C. Williams
SCAM1
2008 DCER: sharing empirical computer science education data
abstract
Data sharing is common, and sometimes even required, in other disciplines. Creating a mechanism for data sharing in computer science education research will benefit both individual researchers and the community. While it is easy to say that data sharing is desirable, it is much more difficult to make it a practical reality.
Kate Sanders 0001, Brad Richards, Jan Erik Moström, Vicki L. Almstrum, Stephen H. Edwards, Sally Fincher, Katherine Gunion, Mark S. Hall, Brian Hanks, Stephen Lonergan, Robert McCartney, Briana B. Morrison, Jaime Spacco, Lynda Thomas
ICER13
2008 Branching and merging in the repository
abstract
Two of the most complex operations version control software allows a user to perform are branching and merging. Branching provides the user the ability to create a copy of the source code to allow changes to be stored in version control but outside of the trunk. Merging provides the user the ability to copy changes from a branch to the trunk. Performing a merge can be a tedious operation and one that may be error prone. In this paper, we compare file revisions found on branches with those found on the trunk to determine when a change that is applied to a branch is moved to the trunk. This will allow us to study how developers use merges and to determine if merges are in fact more error prone than other commits.
Chadd C. Williams, Jaime Spacco
MSR2
2006 Experiences with marmoset: designing and using an advanced submission and testing system for programming courses
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.
Jaime Spacco, David Hovemeyer, William W. Pugh, Fawzi Emad, Jeffrey K. Hollingsworth, Nelson Padua-Perez
ITiCSE1
2005 Evaluating and tuning a static analysis to find null pointer bugs
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.
David Hovemeyer, Jaime Spacco, William W. Pugh
PASTE2
2004 Transparent proxies for java futures
abstract
A proxy object is a surrogate or placeholder that controls access to another target object. Proxies can be used to support distributed programming, lazy or parallel evaluation, access control, and other simple forms of behavioral reflection. However, wrapper proxies (like futures or suspensions for yet-to-be-computed results) can require significant code changes to be used in statically-typed languages, while proxies more generally can inadvertently violate assumptions of transparency, resulting in subtle bugs.
Polyvios Pratikakis, Jaime Spacco, Michael Hicks 0001
OOPSLA2
2002 Atomic Instructions in Java
David Hovemeyer, William W. Pugh, Jaime Spacco
ECOOP3