Demo Data from SIGIR 2026 / reviewers in the wild / expert
Aditya Kanade 0001
dblp:61/2636-1
· DBLP profile ↗
33ranked-venue papers
6as first author
4since 2021 · last 2025
—ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 19 · 5 first-author · 1 since 2021Artificial intelligence and machine learning · 9 · 1 first-author · 3 since 2021Theory of computation · 6 · 1 first-authorGraphics, computer vision, multimedia, augmented reality and games · 4 · 1 since 2021Databases, data management, data science and information retrieval · 2Applied, interdisciplinary, general and emerging computing · 2Human-computer interaction and ubiquitous computing · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
18 papers |
Debugging and program repair · 32% Program synthesis and code generation · 21% Concurrent programming · 18% | |
| Network and information security
1 paper |
Security and privacy of machine learning · 100% | |
| Artificial intelligence
3 papers |
Language models and text generation · 59% Transfer learning and domain adaptation · 22% Efficient and distributed learning · 19% |
Topics — the 30 heaviest of 44, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program synthesis and code generation
code generation with language models |
1.3 | 2 | 2023 | Grace: Language Models Meet Code Edits · ESEC/SIGSOFT FSE 2023 Monitor-Guided Decoding of Code LMs with Static Analysis of Repository Context · NeurIPS 2023 |
Debugging and program repair
automated program repair |
1.2 | 4 | 2019 | Neural Program Repair by Jointly Learning to Localize and Repair · ICLR (Poster) 2019 Deep Reinforcement Learning for Syntactic Error Repair in Student Programs · AAAI 2019 DeepFix: Fixing Common C Language Errors by Deep Learning · AAAI 2017 |
Debugging and program repair
fault localization |
1.2 | 4 | 2019 | Neural Attribution for Semantic Bug-Localization in Student Programs · NeurIPS 2019 Deep Reinforcement Learning for Syntactic Error Repair in Student Programs · AAAI 2019 DeepFix: Fixing Common C Language Errors by Deep Learning · AAAI 2017 |
Program analysis
static analysis |
0.9 | 2 | 2023 | Monitor-Guided Decoding of Code LMs with Static Analysis of Repository Context · NeurIPS 2023 Static deadlock detection for asynchronous C# programs · PLDI 2017 |
Program synthesis and code generation › DSL-based synthesis
spreadsheet formula generation |
0.8 | 1 | 2024 | FLAME: A Small Language Model for Spreadsheet Formulas · AAAI 2024 |
Debugging and program repair › automated program repair
neural program repair |
0.7 | 2 | 2019 | Neural Program Repair by Jointly Learning to Localize and Repair · ICLR (Poster) 2019 DeepFix: Fixing Common C Language Errors by Deep Learning · AAAI 2017 |
Program analysis
dynamic analysis |
0.5 | 3 | 2016 | P3: partitioned path profiling · ESEC/SIGSOFT FSE 2015 Race detection for Android applications · PLDI 2014 Efficient race detection in the presence of programmatic event loops · ISSTA 2016 |
Concurrent programming
concurrency bugs |
0.5 | 2 | 2017 | Static deadlock detection for asynchronous C# programs · PLDI 2017 Race detection for Android applications · PLDI 2014 |
Concurrent programming › concurrency bug detection
data race detection |
0.4 | 2 | 2016 | Efficient race detection in the presence of programmatic event loops · ISSTA 2016 Race detection for Android applications · PLDI 2014 |
Natural language and speech › Language models and text generation
pre-trained language model |
0.4 | 1 | 2020 | Learning and Evaluating Contextual Embedding of Source Code · ICML 2020 |
Security and privacy of machine learning
adversarial attack |
0.4 | 1 | 2020 | ActiveThief: Model Extraction Using Active Learning and Unannotated Public Data · AAAI 2020 |
Security and privacy of machine learning
model stealing |
0.4 | 1 | 2020 | ActiveThief: Model Extraction Using Active Learning and Unannotated Public Data · AAAI 2020 |
Security and privacy of machine learning › adversarial attack
transferable adversarial attack |
0.4 | 1 | 2020 | ActiveThief: Model Extraction Using Active Learning and Unannotated Public Data · AAAI 2020 |
Program analysis
code representation learning |
0.4 | 1 | 2020 | Learning and Evaluating Contextual Embedding of Source Code · ICML 2020 |
Empirical software engineering
mining software repositories |
0.4 | 1 | 2020 | Learning and Evaluating Contextual Embedding of Source Code · ICML 2020 |
Computing education › programming education
automated feedback |
0.4 | 1 | 2019 | Neural Attribution for Semantic Bug-Localization in Student Programs · NeurIPS 2019 |
Compilers and program optimization › parsing
syntax error recovery |
0.4 | 1 | 2019 | Deep Reinforcement Learning for Syntactic Error Repair in Student Programs · AAAI 2019 |
Concurrent programming
concurrency analysis |
0.3 | 1 | 2017 | Efficient computation of happens-before relation for event-driven programs · ISSTA 2017 |
Concurrent programming
deadlock detection |
0.3 | 1 | 2017 | Static deadlock detection for asynchronous C# programs · PLDI 2017 |
Concurrent programming › memory models
happens-before relation |
0.3 | 1 | 2017 | Efficient computation of happens-before relation for event-driven programs · ISSTA 2017 |
Natural language and speech › Language models and text generation
code language models |
0.3 | 1 | 2025 | NextCoder: Robust Adaptation of Code LMs to Diverse Code Edits · ICML 2025 |
Machine learning › Transfer learning and domain adaptation
model adaptation |
0.3 | 1 | 2025 | NextCoder: Robust Adaptation of Code LMs to Diverse Code Edits · ICML 2025 |
Concurrent programming
concurrency bug detection |
0.2 | 1 | 2016 | Efficient race detection in the presence of programmatic event loops · ISSTA 2016 |
Machine learning › Efficient and distributed learning › model compression › lightweight neural network
small language models |
0.2 | 1 | 2024 | FLAME: A Small Language Model for Spreadsheet Formulas · AAAI 2024 |
Program analysis › dynamic analysis › profiling
path profiling |
0.2 | 1 | 2015 | P3: partitioned path profiling · ESEC/SIGSOFT FSE 2015 |
Software maintenance and evolution › software reengineering › software modernization › software migration
API migration |
0.2 | 1 | 2014 | Mining Unit Tests for Discovery and Migration of Math APIs · ACM Trans. Softw. Eng. Methodol. 2014 |
Software testing › test generation
automated test generation |
0.1 | 1 | 2010 | Representation dependence testing using program inversion · SIGSOFT FSE 2010 |
Compilers and program optimization › program transformation
program inversion |
0.1 | 1 | 2010 | Representation dependence testing using program inversion · SIGSOFT FSE 2010 |
Electronic design automation › hardware verification and test
hardware verification |
0.1 | 1 | 2009 | Generating and Analyzing Symbolic Traces of Simulink/Stateflow Models · CAV 2009 |
Embedded and real-time systems
model-based design |
0.1 | 1 | 2009 | Generating and Analyzing Symbolic Traces of Simulink/Stateflow Models · CAV 2009 |
Methods — techniques the papers use, named apart from their topics
fine-tuning · 3.3transformer · 2.4synthetic data generation · 1.7sparse projection · 1.7noisy auto-encoding · 1.5masked span prediction · 1.5domain-specific tokenizer · 1.5static analysis · 0.7large language model · 0.7language model decoding · 0.7unannotated public data · 0.4pre-training · 0.4active learning · 0.4BiLSTM · 0.4BERT · 0.4tree convolutional neural network · 0.4neural prediction attribution · 0.4semi-supervised learning · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | NextCoder: Robust Adaptation of Code LMs to Diverse Code EditsabstractSoftware engineering activities frequently involve edits to existing code. However, contemporary code language models (LMs) lack the ability to handle diverse types of code-edit requirements. In this work, we attempt to overcome this shortcoming through (1) a novel synthetic data generation pipeline and (2) a robust model adaptation algorithm. Starting with seed code examples and diverse editing criteria, our pipeline generates high-quality samples comprising original and modified code, along with natural language instructions in different styles and verbosity. Today’s code LMs come bundled with strong abilities, such as code generation and instruction following, which should not be lost due to fine-tuning. To ensure this, we propose a novel adaptation algorithm, SeleKT, that (a) leverages a dense gradient-based step to identify the weights that are most important for code editing, and (b) does a sparse projection onto the base model to avoid overfitting. Using our approach, we obtain a new series of models NextCoder (adapted from QwenCoder-2.5) that achieves strong results on five code-editing benchmarks, outperforming comparable size models and even several larger ones. We show the generality of our approach on two model families DeepSeekCoder and QwenCoder), compare against other fine-tuning approaches, and demonstrate robustness by showing retention of code generation and general problem-solving abilities post adaptation. We opensource the models, synthetic dataset, and implementation at https://aka.ms/nextcoder. Tushar Aggarwal, Swayam Singh, Abhijeet Awasthi, Aditya Kanade 0001, Nagarajan Natarajan |
ICML | 4 |
| 2024 | FLAME: A Small Language Model for Spreadsheet FormulasabstractSpreadsheets are a vital tool for end-user data management. Using large language models for formula authoring assistance in these environments can be difficult, as these models are expensive to train and challenging to deploy due to their size (up to billions of parameters). We present FLAME, a transformer-based model trained exclusively on Excel formulas that leverages domain insights to achieve competitive performance while being substantially smaller (60M parameters) and training on two orders of magnitude less data. We curate a training dataset using sketch deduplication, introduce an Excel-specific formula tokenizer, and use domain-specific versions of masked span prediction and noisy auto-encoding as pre-training objectives. We evaluate FLAME on formula repair, formula completion, and similarity-based formula retrieval. FLAME can outperform much larger models, such as the Davinci (175B) and Cushman (12B) variants of Codex and CodeT5 (220M), in 10 of 14 evaluation settings for the repair and completion tasks. For formula retrieval, FLAME outperforms CodeT5, CodeBERT, and GraphCodeBERT. Harshit Joshi, Abishai Ebenezer, José Cambronero, Sumit Gulwani, Aditya Kanade 0001, Vu Le 0002, Ivan Radicek, Gust Verbruggen |
AAAI | 5 |
| 2023 | Monitor-Guided Decoding of Code LMs with Static Analysis of Repository ContextabstractLanguage models of code (LMs) work well when the surrounding code provides sufficient context. This is not true when it becomes necessary to use types, functionality or APIs defined elsewhere in the repository or a linked library, especially those not seen during training. LMs suffer from limited awareness of such global context and end up hallucinating.
Integrated development environments (IDEs) assist developers in understanding repository context using static analysis. We extend this assistance, enjoyed by developers, to LMs. We propose monitor-guided decoding (MGD) where a monitor uses static analysis to guide the decoding. We construct a repository-level dataset PragmaticCode for method-completion in Java and evaluate MGD on it. On models of varying parameter scale, by monitoring for type-consistent object dereferences, MGD consistently improves compilation rates and agreement with ground truth. Further, LMs with fewer parameters, when augmented with MGD, can outperform larger LMs. With MGD, SantaCoder-1.1B achieves better compilation rate and next-identifier match than the much larger text-davinci-003 model.
We also conduct a generalizability study to evaluate the ability of MGD to generalize to multiple programming languages (Java, C# and Rust), coding scenarios (e.g., correct number of arguments to method calls), and to enforce richer semantic constraints (e.g., stateful API protocols). Our data and implementation are available at https://github.com/microsoft/monitors4codegen. Lakshya A. Agrawal, Aditya Kanade 0001, Navin Goyal, Shuvendu K. Lahiri, Sriram K. Rajamani |
NeurIPS | 2 |
| 2023 | Grace: Language Models Meet Code EditsabstractDevelopers spend a significant amount of time in editing code for a variety of reasons such as bug fixing or adding new features. Designing effective methods to predict code edits has been an active yet challenging area of research due to the diversity of code edits and the difficulty of capturing the developer intent. In this work, we address these challenges by endowing pre-trained large language models (LLMs) with the knowledge of relevant prior associated edits, which we call the Grace (Generation conditioned on Associated Code Edits) method. The generative capability of the LLMs helps address the diversity in code changes and conditioning code generation on prior edits helps capture the latent developer intent. We evaluate two well-known LLMs, codex and CodeT5, in zero-shot and fine-tuning settings respectively. In our experiments with two datasets, Grace boosts the performance of the LLMs significantly, enabling them to generate 29% and 54% more correctly edited code in top-1 suggestions relative to the current state-of-the-art symbolic and neural approaches, respectively. Priyanshu Gupta, Avishree Khare, Yasharth Bajpai, Saikat Chakraborty 0001, Sumit Gulwani, Aditya Kanade 0001, Arjun Radhakrishna, Gustavo Soares, Ashish Tiwari 0001 |
ESEC/SIGSOFT FSE | 6 |
| 2020 | ActiveThief: Model Extraction Using Active Learning and Unannotated Public DataabstractMachine learning models are increasingly being deployed in practice. Machine Learning as a Service (MLaaS) providers expose such models to queries by third-party developers through application programming interfaces (APIs). Prior work has developed model extraction attacks, in which an attacker extracts an approximation of an MLaaS model by making black-box queries to it. We design ActiveThief – a model extraction framework for deep neural networks that makes use of active learning techniques and unannotated public datasets to perform model extraction. It does not expect strong domain knowledge or access to annotated data on the part of the attacker. We demonstrate that (1) it is possible to use ActiveThief to extract deep classifiers trained on a variety of datasets from image and text domains, while querying the model with as few as 10-30% of samples from public datasets, (2) the resulting model exhibits a higher transferability success rate of adversarial examples than prior work, and (3) the attack evades detection by the state-of-the-art model extraction detection method, PRADA. Soham Pal, Yash Gupta, Aditya Kanade 0001, Shirish K. Shevade, Vinod Ganapathy |
AAAI | 4 |
| 2020 | Learning and Evaluating Contextual Embedding of Source CodeabstractRecent research has achieved impressive results on understanding and improving source code by building up on machine-learning techniques developed for natural languages. A significant advancement in natural-language understanding has come with the development of pre-trained contextual embeddings, such as BERT, which can be fine-tuned for downstream tasks with less labeled data and training budget, while achieving better accuracies. However, there is no attempt yet to obtain a high-quality contextual embedding of source code, and to evaluate it on multiple program-understanding tasks simultaneously; that is the gap that this paper aims to mitigate. Specifically, first, we curate a massive, deduplicated corpus of 7.4M Python files from GitHub, which we use to pre-train CuBERT, an open-sourced code-understanding BERT model; and, second, we create an open-sourced benchmark that comprises five classification tasks and one program-repair task, akin to code-understanding tasks proposed in the literature before. We fine-tune CuBERT on our benchmark tasks, and compare the resulting models to different variants of Word2Vec token embeddings, BiLSTM and Transformer models, as well as published state-of-the-art models, showing that CuBERT outperforms them all, even with shorter training, and with fewer labeled examples. Future work on source-code embedding can benefit from reusing our benchmark, and from comparing against CuBERT models as a strong baseline. Aditya Kanade 0001, Petros Maniatis, Gogul Balakrishnan, Kensen Shi |
ICML | 1 |
| 2019 | Deep Reinforcement Learning for Syntactic Error Repair in Student ProgramsabstractNovice programmers often struggle with the formal syntax of programming languages. In the traditional classroom setting, they can make progress with the help of real time feedback from their instructors which is often impossible to get in the massive open online course (MOOC) setting. Syntactic error repair techniques have huge potential to assist them at scale. Towards this, we design a novel programming language correction framework amenable to reinforcement learning. The framework allows an agent to mimic human actions for text navigation and editing. We demonstrate that the agent can be trained through self-exploration directly from the raw input, that is, program text itself, without either supervision or any prior knowledge of the formal syntax of the programming language. We evaluate our technique on a publicly available dataset containing 6975 erroneous C programs with typographic errors, written by students during an introductory programming course. Our technique fixes 1699 (24.4%) programs completely and 1310 (18.8%) program partially, outperforming DeepFix, a state-of-the-art syntactic error repair technique, which uses a fully supervised neural machine translation approach. Aditya Kanade 0001, Shirish K. Shevade |
AAAI | 2 |
| 2019 | Neural Program Repair by Jointly Learning to Localize and Repair
Marko Vasic, Aditya Kanade 0001, Petros Maniatis, David Bieber, Rishabh Singh |
ICLR (Poster) | 2 |
| 2019 | Neural Attribution for Semantic Bug-Localization in Student ProgramsabstractProviding feedback is an integral part of teaching. Most open online courses on programming make use of automated grading systems to support programming assignments and give real-time feedback. These systems usually rely on test results to quantify the programs' functional correctness. They return failing tests to the students as feedback. However, students may find it difficult to debug their programs if they receive no hints about where the bug is and how to fix it. In this work, we present NeuralBugLocator, a deep learning based technique, that can localize the bugs in a faulty program with respect to a failing test, without even running the program. At the heart of our technique is a novel tree convolutional neural network which is trained to predict whether a program passes or fails a given test. To localize the bugs, we analyze the trained network using a state-of-the-art neural prediction attribution technique and see which lines of the programs make it predict the test outcomes. Our experiments show that NeuralBugLocator is generally more accurate than two state-of-the-art program-spectrum based and one syntactic difference based bug-localization baselines. Aditya Kanade 0001, Shirish K. Shevade |
NeurIPS | 2 |
| 2018 | Active Learning for Efficient Testing of Student Programs
Ishan Rastogi, Aditya Kanade 0001, Shirish K. Shevade |
AIED (2) | 2 |
| 2017 | DeepFix: Fixing Common C Language Errors by Deep LearningabstractThe problem of automatically fixing programming errors is a very active research topic in software engineering. This is a challenging problem as fixing even a single error may require analysis of the entire program. In practice, a number of errors arise due to programmer's inexperience with the programming language or lack of attention to detail. We call these common programming errors. These are analogous to grammatical errors in natural languages. Compilers detect such errors, but their error messages are usually inaccurate. In this work, we present an end-to-end solution, called DeepFix, that can fix multiple such errors in a program without relying on any external tool to locate or fix them. At the heart of DeepFix is a multi-layered sequence-to-sequence neural network with attention which is trained to predict erroneous program locations along with the required correct statements. On a set of 6971 erroneous C programs written by students for 93 programming tasks, DeepFix could fix 1881 (27%) programs completely and 1338 (19%) programs partially. Soham Pal, Aditya Kanade 0001, Shirish K. Shevade |
AAAI | 3 |
| 2017 | Efficient computation of happens-before relation for event-driven programsabstractAn emerging style of programming is to use both threads and events to achieve better scalability. The improved scalability comes at the price of increased complexity, as both threads and events can follow non-deterministic schedules. The happens-before (HB) relation captures the space of possible schedules and forms the basis of various concurrency analyses. Improving efficiency of the HB computation can speed up these analyses. Pallavi Maiya, Aditya Kanade 0001 |
ISSTA | 2 |
| 2017 | Static deadlock detection for asynchronous C# programsabstractAsynchronous programming is a standard approach for designing responsive applications. Modern languages such as C# provide async/await primitives for the disciplined use of asynchrony. In spite of this, programs can deadlock because of incorrect use of blocking operations along with non-blocking (asynchronous) operations. While developers are aware of this problem, there is no automated technique to detect deadlocks in asynchronous programs. Anirudh Santhiar, Aditya Kanade 0001 |
PLDI | 2 |
| 2016 | Efficient race detection in the presence of programmatic event loopsabstractAn event loop is the basic scheduling mechanism for programs that respond to asynchronous events. In some frameworks, only the runtime can spin event loops, while in others, these can also be spun programmatically by event handlers. The latter provides more flexibility and helps improve responsiveness in cases where an event handler must wait for some input, for example, from the user or network. It can do so while spinning an event loop. Anirudh Santhiar, Shalini Kaleeswaran, Aditya Kanade 0001 |
ISSTA | 3 |
| 2016 | Asynchrony-aware static analysis of Android applicationsabstractSoftware applications developed for the Android platform are very popular. Due to this, static analysis of these applications has received a lot of attention recently. An Android application is essentially an asynchronous, event-driven program. The Android framework manages the state of the application by invoking callbacks, called lifecycle callbacks, in pre-defined orders. Unfortunately, the existing static analysis techniques treat the callbacks synchronously. Additionally, they do not model all possible orderings of lifecycle callbacks. These may result in unsound analysis results. In this work, we present a precise representation of control flow of Android applications called Android inter-component control flow graph (AICCFG). In this representation, the asynchronous nature of the callbacks is modeled accurately. Further, all interleavings of callbacks of different components of an Android application are modeled in AICCFG. We use this representation to design a typestate analysis of Android applications. Android applications use a rich set of resources such as camera and media player whose safe usage is governed by some state machines. Using the typestate analysis, we can verify whether an application uses a resource safely or not. We have implemented the construction of AICCFG and the typestate analysis in the Soot framework. We have also implemented a variant of typestate analysis which uses the unsound control flow model used commonly in the literature. To compare our AICCFG based analysis with this, we present a benchmark of Android applications called AsyncBench. It comprises applications that use various resources in both safe and unsafe manner. The experiments over this benchmark demonstrate the benefits of our more precise control flow model and the typestate analysis. Ashish Mishra 0002, Aditya Kanade 0001, Y. N. Srikant |
MEMOCODE | 2 |
| 2016 | Semi-supervised verified feedback generationabstractStudents have enthusiastically taken to online programming lessons and contests. Unfortunately, they tend to struggle due to lack of personalized feedback. There is an urgent need of program analysis and repair techniques capable of handling both the scale and variations in student submissions, while ensuring quality of feedback. Shalini Kaleeswaran, Anirudh Santhiar, Aditya Kanade 0001, Sumit Gulwani |
SIGSOFT FSE | 3 |
| 2016 | Partial Order Reduction for Event-Driven Multi-threaded Programs
Pallavi Maiya, Aditya Kanade 0001, Rupak Majumdar |
TACAS | 3 |
| 2015 | Rely/Guarantee Reasoning for Asynchronous ProgramsabstractAsynchronous programming has become ubiquitous in smartphone and web application development, as well as in the development of server-side and system applications. Many of the uses of asynchrony can be modeled by extending programming languages with asynchronous procedure calls - procedures not executed immediately, but stored and selected for execution at a later point by a non-deterministic scheduler. Asynchronous calls induce a flow of control that is difficult to reason about, which in turn makes formal verification of asynchronous programs challenging. In response, we take a rely/guarantee approach: Each asynchronous procedure is verified separately with respect to its rely and guarantee predicates; the correctness of the whole program then follows from the natural conditions the rely/guarantee predicates have to satisfy. In this way, the verification of asynchronous programs is modularly decomposed into the more usual verification of sequential programs with synchronous calls. For the sequential program verification we use Hoare-style deductive reasoning, which we demonstrate on several simplified examples. These examples were inspired from programs written in C using the popular Libevent library; they are manually annotated and verified within the state-of-the-art Frama-C platform. Ivan Gavran, Filip Niksic, Aditya Kanade 0001, Rupak Majumdar, Viktor Vafeiadis |
CONCUR | 3 |
| 2015 | P3: partitioned path profilingabstractAcyclic path profile is an abstraction of dynamic control flow paths of procedures and has been found to be useful in a wide spectrum of activities. Unfortunately, the runtime overhead of obtaining such a profile can be high, limiting its use in practice. In this paper, we present partitioned path profiling (P3) which runs K copies of the program in parallel, each with the same input but on a separate core, and collects the profile only for a subset of intra-procedural paths in each copy, thereby, distributing the overhead of profiling. P3 identifies “profitable” procedures and assigns disjoint subsets of paths of a profitable procedure to different copies for profiling. To obtain exact execution frequencies of a subset of paths, we design a new algorithm, called PSPP. All paths of an unprofitable procedure are assigned to the same copy. P3 uses the classic Ball-Larus algorithm for profiling unprofitable procedures. Further, P3 attempts to evenly distribute the profiling overhead across the copies. To the best of our knowledge, P3 is the first algorithm for parallel path profiling. We have applied P3 to profile several programs in the SPEC 2006 benchmark. Compared to sequential profiling, P3 substantially reduced the runtime overhead on these programs averaged across all benchmarks. The reduction was 23%, 43% and 56% on average for 2, 4 and 8 cores respectively. P3 also performed better than a coarse-grained approach that treats all procedures as unprofitable and distributes them across available cores. For 2 cores, the profiling overhead of P3 was on average 5% less compared to the coarse-grained approach across these programs. For 4 and 8 cores, it was respectively 18% and 25% less. Mohammed Afraz, Diptikalyan Saha, Aditya Kanade 0001 |
ESEC/SIGSOFT FSE | 3 |
| 2015 | Non-deterministic transducer models of retransmission protocols over noisy channels
Jay Thakkar, Aditya Kanade 0001 |
Inf. Process. Lett. | 2 |
| 2014 | MintHint: automated synthesis of repair hintsabstractBeing able to automatically repair programs is at the same time a very compelling vision and an extremely challenging task. In this paper, we present MintHint, a novel technique for program repair that is a departure from most of today’s approaches. Instead of trying to fully automate program repair, which is often an unachievable goal, MintHint performs statistical correlation analysis to identify expressions that are likely to occur in the repaired code and generates, using pattern-matching based synthesis, repair hints from these expressions. Intuitively, these hints suggest how to rectify a faulty statement and help developers find a complete, actual repair. Shalini Kaleeswaran, Varun Tulsian, Aditya Kanade 0001, Alessandro Orso |
ICSE | 3 |
| 2014 | MUX: algorithm selection for software model checkersabstractWith the growing complexity of modern day software, software model checking has become a critical technology for ensuring correctness of software. As is true with any promising technology, there are a number of tools for software model checking. However, their respective performance trade-offs are difficult to characterize accurately – making it difficult for practitioners to select a suitable tool for the task at hand. This paper proposes a technique called MUX that addresses the problem of selecting the most suitable software model checker for a given input instance. MUX performs machine learning on a repository of software verification instances. The algorithm selector, synthesized through machine learning, uses structural features from an input instance, comprising a program-property pair, at runtime and determines which tool to use. Varun Tulsian, Aditya Kanade 0001, Rahul Kumar 0002, Akash Lal, Aditya V. Nori |
MSR | 2 |
| 2014 | Race detection for Android applicationsabstractProgramming environments for smartphones expose a concurrency model that combines multi-threading and asynchronous event-based dispatch. While this enables the development of efficient and feature-rich applications, unforeseen thread interleavings coupled with non-deterministic reorderings of asynchronous tasks can lead to subtle concurrency errors in the applications. Pallavi Maiya, Aditya Kanade 0001, Rupak Majumdar |
PLDI | 2 |
| 2014 | Mining Unit Tests for Discovery and Migration of Math APIsabstractToday's programming languages are supported by powerful third-party APIs. For a given application domain, it is common to have many competing APIs that provide similar functionality. Programmer productivity therefore depends heavily on the programmer's ability to discover suitable APIs both during an initial coding phase, as well as during software maintenance. The aim of this work is to support the discovery and migration of math APIs. Math APIs are at the heart of many application domains ranging from machine learning to scientific computations. Our approach, called M ath F inder , combines executable specifications of mathematical computations with unit tests (operational specifications) of API methods. Given a math expression, M ath F inder synthesizes pseudo-code comprised of API methods to compute the expression by mining unit tests of the API methods. We present a sequential version of our unit test mining algorithm and also design a more scalable data-parallel version. We perform extensive evaluation of M ath F inder (1) for API discovery , where math algorithms are to be implemented from scratch and (2) for API migration , where client programs utilizing a math API are to be migrated to another API. We evaluated the precision and recall of M ath F inder on a diverse collection of math expressions, culled from algorithms used in a wide range of application areas such as control systems and structural dynamics. In a user study to evaluate the productivity gains obtained by using M ath F inder for API discovery, the programmers who used M ath F inder finished their programming tasks twice as fast as their counterparts who used the usual techniques like web and code search, IDE code completion, and manual inspection of library documentation. For the problem of API migration, as a case study, we used M ath F inder to migrate Weka, a popular machine learning library. Overall, our evaluation shows that M ath F inder is easy to use, provides highly precise results across several math APIs and application domains even with a small number of unit tests per method, and scales to large collections of unit tests. Anirudh Santhiar, Omesh Pandita, Aditya Kanade 0001 |
ACM Trans. Softw. Eng. Methodol. | 3 |
| 2013 | Discovering Math APIs by Mining Unit Tests
Anirudh Santhiar, Omesh Pandita, Aditya Kanade 0001 |
FASE | 3 |
| 2012 | Static Analysis for Checking Data Format Compatibility of ProgramsabstractLarge software systems are developed by composing multiple programs. If the programs manipulate and exchange complex data, such as network packets or files, it is essential to establish that they follow compatible data formats. Most of the complexity of data formats is associated with the headers. In this paper, we address compatibility of programs operating over headers of network packets, files, images, etc. As format specifications are rarely available, we infer the format associated with headers by a program as a set of guarded layouts. In terms of these formats, we define and check compatibility of (a) producer-consumer programs and (b) different versions of producer (or consumer) programs. A compatible producer-consumer pair is free of type mismatches and logical incompatibilities such as the consumer rejecting valid outputs generated by the producer. A backward compatible producer (resp. consumer) is guaranteed to be compatible with consumers (resp. producers) that were compatible with its older version. With our prototype tool, we identified 5 known bugs and 1 potential bug in (a) sender-receiver modules of Linux network drivers of 3 vendors and (b) different versions of a TIFF image library. Pranavadatta Devaki, Aditya Kanade 0001 |
FSTTCS | 2 |
| 2010 | Representation dependence testing using program inversionabstractThe definition of a data structure may permit many different concrete representations of the same logical content. A (client) program that accepts such a data structure as input is said to have a representation dependence if its behavior differs for logically equivalent input values. In this paper, we present a methodology and tool for automated testing of clients of a data structure for representation dependence. In the proposed methodology, the developer expresses the logical equivalence by writing a normalization program f that maps each concrete representation to a canonical one. Our solution relies on automatically synthesizing the one-to-many inverse function of f: given an input value x, we can generate multiple test inputs logically equivalent to x by executing the inverse with the canonical value f(x) as input repeatedly. We present an inversion algorithm for restricted classes of normalization programs including programs mapping arrays to arrays in a typical iterative manner. We present a prototype implementation of the algorithm, and demonstrate how our methodology reveals bugs due to representation dependence in open source software such as Open Office and Picasa using the widely used image format TIFF. TIFF is a challenging case study for our approach. Aditya Kanade 0001, Rajeev Alur, Sriram K. Rajamani, G. Ramalingam |
SIGSOFT FSE | 1 |
| 2009 | Generating and Analyzing Symbolic Traces of Simulink/Stateflow Models
Aditya Kanade 0001, Rajeev Alur, Franjo Ivancic, S. Ramesh 0002, Sriram Sankaranarayanan 0001, K. C. Shashidhar |
CAV | 1 |
| 2009 | Validation of GCC optimizers through trace generationabstractAbstract The translation validation approach involves establishing semantics preservation of individual compilations. In this paper, we present a novel framework for translation validation of optimizers. We identify a comprehensive set of primitive program transformations that are commonly used in many optimizations. For each primitive, we define soundness conditions that guarantee that the transformation is semantics preserving. This framework of transformations and soundness conditions is independent of any particular compiler implementation and is formalized in PVS. An optimizer is instrumented to generate the trace of an optimization run in terms of the predefined transformation primitives. The validation succeeds if (1) the trace conforms to the optimization and (2) the soundness conditions of the individual transformations in the trace are satisfied. The first step eliminates the need to trust the instrumentation. The soundness conditions are defined in a temporal logic and therefore the second step involves model checking. Thus the scheme is completely automatable. We have applied this approach to several intraprocedural optimizations of RTL intermediate code in GNU Compiler Collection (GCC) v4.1.0, namely, loop invariant code motion, partial redundancy elimination, lazy code motion, code hoisting, and copy and constant propagation for sample programs written in a subset of the C language. The validation does not require information about program analyses performed by GCC. Therefore even though the GCC code base is quite large and complex, instrumentation could be achieved easily. The framework requires an estimated 21 lines of instrumentation code and 140 lines of PVS specifications for every 1000 lines of the GCC code considered for validation. Copyright © 2009 John Wiley & Sons, Ltd. Aditya Kanade 0001, Amitabha Sanyal, Uday P. Khedker |
Softw. Pract. Exp. | 1 |
| 2008 | Ranking Automata and Games for Prioritized Requirements
Rajeev Alur, Aditya Kanade 0001, Gera Weiss |
CAV | 2 |
| 2008 | Symbolic analysis for improving simulation coverage of Simulink/Stateflow modelsabstractAimed at verifying safety properties and improving simula-tion coverage for hybrid systems models of embedded control software, we propose a technique that combines numerical simulation and symbolic methods for computing state-sets. We consider systems with linear dynamics described in the commercial modeling tool Simulink/Stateflow. Given an ini-tial state x, and a discrete-time simulation trajectory, our method computes a set of initial states that are guaranteed to be equivalent to x, where two initial states are consid-ered to be equivalent if the resulting simulation trajectories contain the same discrete components at each step of the simulation. We illustrate the benefits of our method on two case studies. One case study is a benchmark proposed in the literature for hybrid systems verification and another is a Simulink demo model from Mathworks. Rajeev Alur, Aditya Kanade 0001, S. Ramesh 0002, K. C. Shashidhar |
EMSOFT | 2 |
| 2006 | A PVS Based Framework for Validating Compiler OptimizationsabstractAn optimization can be specified as sequential compositions of predefined transformation primitives. For each primitive, we can define soundness conditions which guarantee that the transformation is semantics preserving. An optimization of a program preserves semantics, if all applications of the primitives in the optimization satisfy their respective soundness conditions on the versions of the input program on which they are applied. This scheme does not directly check semantic equivalence of the input and the optimized programs and is therefore amenable to automation. Automating this scheme however requires a trusted framework for simulating transformation primitives and checking their soundness conditions. In this paper, we present the design of such a framework based on PVS. We have used it for specifying and validating several optimizations viz. common subexpression elimination, optimal code placement, lazy code motion, loop invariant code motion, full and partial dead code elimination, etc Aditya Kanade 0001, Amitabha Sanyal, Uday P. Khedker |
SEFM | 1 |
| 2005 | Heterogeneous Fixed Points with Application to Points-To Analysis
Aditya Kanade 0001, Uday P. Khedker, Amitabha Sanyal |
APLAS | 1 |