- Software Testing and Debugging Techniques
- Software Engineering Research
- Logic, programming, and type systems
- Parallel Computing and Optimization Techniques
- Formal Methods in Verification
- Software System Performance and Reliability
- Software Reliability and Analysis Research
- Advanced Malware Detection Techniques
- Security and Verification in Computing
- Machine Learning and Algorithms
- Machine Learning and Data Classification
- IoT and Edge/Fog Computing
- Cloud Computing and Resource Management
- Multimodal Machine Learning Applications
- Logic, Reasoning, and Knowledge
- Green IT and Sustainability
- Advanced Software Engineering Methodologies
- Natural Language Processing Techniques
- Generative Adversarial Networks and Image Synthesis
- Evolutionary Algorithms and Applications
- Explainable Artificial Intelligence (XAI)
- Radiation Effects in Electronics
- Real-Time Systems Scheduling
- Topic Modeling
- Low-power high-performance VLSI design
California University of Pennsylvania
2017-2024
University of Pennsylvania
2017-2024
Amrita Vishwa Vidyapeetham
2024
Philadelphia University
2017-2024
GIET University
2021
Georgia Institute of Technology
2012-2016
Atlanta Technical College
2013-2016
Intel (United States)
2008-2012
Intel (India)
2009
Stanford University
2005-2007
Mobile applications are becoming increasingly ubiquitous and provide ever richer functionality on mobile devices. At the same time, such devices often enjoy strong connectivity with more powerful machines ranging from laptops desktops to commercial clouds. This paper presents design implementation of CloneCloud, a system that automatically transforms benefit cloud. The is flexible application partitioner execution runtime enables unmodified running in an application-level virtual machine...
We present a statistical debugging algorithm that isolates bugs in programs containing multiple undiagnosed bugs. Earlier algorithms focus solely on identifying predictors correlate with program failure perform poorly when there are Our new technique separates the effects of different and identifies associated individual These reveal both circumstances under which occur as well frequencies modes, making it easier to prioritize efforts. is validated using several case studies, including...
We present a system Dynodroid for generating relevant inputs to unmodified Android apps. views an app as event-driven program that interacts with its environment by means of sequence events through the framework. By instrumenting framework once and all, monitors reaction upon each event in lightweight manner, using it guide generation next app. also allows interleaving from machines, which are better at large number simple inputs, humans, who providing intelligent inputs.
We present a statistical debugging algorithm that isolates bugs in programs containing multiple undiagnosed bugs. Earlier algorithms focus solely on identifying predictors correlate with program failure perform poorly when there are Our new technique separates the effects of different and identifies associated individual These reveal both circumstances under which occur as well frequencies modes, making it easier to prioritize efforts. is validated using several case studies, including...
We present a novel technique for static race detection in Java programs, comprised of series stages that employ combination analyses to successively reduce the pairs memory accesses potentially involved race. have implemented our and applied it suite multi-threaded programs. Our experiments show is precise, scalable, useful, reporting tens hundreds serious previously unknown concurrency bugs large, widely-used programs with few false alarms.
We present a novel technique for static race detection in Java programs, comprised of series stages that employ combination analyses to successively reduce the pairs memory accesses potentially involved race. have implemented our and applied it suite multi-threaded programs. Our experiments show is precise, scalable, useful, reporting tens hundreds serious previously unknown concurrency bugs large, widely-used programs with few false alarms.
We present an algorithm and a system for generating input events to exercise smartphone apps. Our approach is based on concolic testing generates sequences of automatically systematically. It alleviates the path-explosion problem by checking condition program executions that identifies subsumption between different event sequences. also describe our implementation Android, most popular app platform, results evaluation demonstrates its effectiveness five Android
There is significant room for improving users' experiences with model checking tools. An error trace produced by a checker can be lengthy and indicative of symptom an error. As result, users spend considerable time examining in order to understand the cause Moreover, even state-of-the-art checkers provide experience akin that provided parsers before syntactic recovery was invented: they report single per run. The user has fix run again find more traces.We present algorithm exploits existence...
We present a novel dynamic analysis technique that finds real deadlocks in multi-threaded programs. Our runs two stages. In the first stage, we use an imprecise to find potential program by observing execution of program. second control random thread scheduler create with high probability. Unlike other techniques, our approach has advantage it does not give any false warnings. have implemented prototype tool for Java, and experimented on number large Java report previously known unknown were...
We present an effective static deadlock detection algorithm for Java. Our uses a novel combination of analyses each which approximates different necessary condition deadlock. have implemented the and report upon our experience applying it to suite multi-threaded Java programs. While neither sound nor complete, approach is in practice, finding all known deadlocks as well discovering previously unknown ones benchmarks with few false alarms.
There is great potential for boosting the performance of mobile devices by offloading computation-intensive parts applications to cloud. The full realization this hindered a mismatch between how individual demand computing resources and cloud providers offer them: requests from device usually require quick response, may be infrequent, are subject variable network connectivity, whereas incur relatively long setup times, leased time quanta, indifferent connectivity. In paper, we present design...
Prevalent software engineering practices such as code reuse and the "one-size-fits-all" methodology have contributed to significant widespread increases in size complexity of software. The resulting bloat has led decreased performance increased security vulnerabilities. We propose a system called Chisel enable programmers effectively customize debloat programs. takes input program be debloated high-level specification its desired functionality. output is reduced version that correct with...
We describe a statistical approach to software debugging in the presence of multiple bugs. Due sparse sampling issues and complex interaction between program predicates, many generic off-the-shelf algorithms fail select useful bug predictors. Taking inspiration from bi-clustering algorithms, we propose an iterative collective voting scheme for runs predicates. demonstrate successful results on several real world programs large benchmark suite.
Race detection algorithms for multi-threaded programs using the common lock-based synchronization idiom must correlate locks with memory locations they guard. The heart of a proof race freedom is showing that if two are distinct, then guard also distinct. This an example general property we call conditional not aliasing : Under assumption objects aliased, prove other aliased. paper introduces and gives algorithm alias analysis discusses experimental results sound Java programs.
Race detection algorithms for multi-threaded programs using the common lock-based synchronization idiom must correlate locks with memory locations they guard. The heart of a proof race freedom is showing that if two are distinct, then guard also distinct. This an example general property we call conditional not aliasing: Under assumption objects aliased, prove other aliased. paper introduces and gives algorithm alias analysis discusses experimental results sound Java programs.
Mobile devices are increasingly being relied on for tasks that go beyond simple connectivity and demand more complex processing. The primary approach in wide use today uses cloud computing resources to off-load the "heavy lifting" specially designated servers when they well connected. In reality, a mobile device often encounters, albeit intermittently, many entities capable of lending computational resources. this work-in-progress paper we first give an overview environment, which call...
A central task for a program analysis concerns how to efficiently find abstraction that keeps only information relevant proving properties of interest. We present new approach finding such abstractions analyses written in Datalog. Our is based on counterexample-guided refinement: when Datalog run fails using an abstraction, it seeks generalize the cause failure other abstractions, and pick avoids similar failure. solution uses boolean satisfiability formulation general, complete, optimal:...
Energy efficiency is a primary constraint in modern systems. Approximate computing promising approach that trades quality of result for gains and performance. State- of-the-art approximate programming models require extensive manual annotations on program data operations to guarantee safe execution programs. The need hinders the practical use approximation techniques. This paper describes FlexJava, small set language extensions, significantly reduces annotation effort, paving way...
A key challenge in program synthesis concerns how to efficiently search for the desired space of possible programs. We propose a general approach accelerate search-based by biasing towards likely Our targets standard formulation, syntax-guided (SyGuS), extending grammar programs with probabilistic model dictating likelihood each program. develop weighted algorithm enumerate order their likelihood. also method based on transfer learning that enables effectively learn powerful model, called...
Program analysis tools often produce undesirable output due to various approximations. We present an approach and a system EUGENE that allows user feedback guide such approximations towards producing the desired output. formulate problem of user-guided program in terms solving combination hard rules soft rules: capture soundness while degrees preferences users. Our technique solves using off-the-shelf solver manner is sound (satisfies all rules), optimal (maximally satisfies scales...
We present an effective dynamic analysis for finding a broad class of deadlocks, including the well-studied lock-only deadlocks as well less-studied, but no less widespread or insidious, involving condition variables. Our consists two stages. In first stage, our observes multi-threaded program execution and generates simple program, called trace that only records operations observed during are deemed relevant to deadlocks. Such include lock acquire release, wait notify, thread start join,...