VLDB 2026 Research / reviewers in the wild / expert
Tihomir Gvero
dblp:15/2242
· DBLP profile ↗
9ranked-venue papers
5as first author
0since 2021 · last 2015
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 9 · 5 first-authorTheory of computation · 1 · 1 first-author
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
8 papers |
Program synthesis and code generation · 60% Software testing · 14% Debugging and program repair · 13% |
Topics — the 16 heaviest of 17, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program synthesis and code generation
code assistance |
0.4 | 2 | 2015 | Synthesizing Java expressions from free-form queries · OOPSLA 2015 Interactive Synthesis Using Free-Form Queries · ICSE (2) 2015 |
Program synthesis and code generation
interactive program synthesis |
0.3 | 2 | 2015 | Interactive Synthesis Using Free-Form Queries · ICSE (2) 2015 Interactive Synthesis of Code Snippets · CAV 2011 |
Debugging and program repair
automated program repair |
0.2 | 2 | 2011 | ReAssert: a tool for repairing broken unit tests · ICSE 2011 On test repair using symbolic execution · ISSTA 2010 |
Software testing
test repair |
0.2 | 2 | 2011 | ReAssert: a tool for repairing broken unit tests · ICSE 2011 On test repair using symbolic execution · ISSTA 2010 |
Program synthesis and code generation
code generation from natural language |
0.2 | 1 | 2015 | Synthesizing Java expressions from free-form queries · OOPSLA 2015 |
Program synthesis and code generation
code completion |
0.2 | 1 | 2013 | Complete completion using types and weights · PLDI 2013 |
Program synthesis and code generation
type-directed synthesis |
0.2 | 1 | 2013 | Complete completion using types and weights · PLDI 2013 |
Program synthesis and code generation › type-directed synthesis
type inhabitation |
0.2 | 1 | 2013 | Complete completion using types and weights · PLDI 2013 |
Program synthesis and code generation › code generation from natural language
code snippet synthesis |
0.1 | 1 | 2011 | Interactive Synthesis of Code Snippets · CAV 2011 |
Programming languages and type systems
language design |
0.1 | 1 | 2010 | Test generation through programming in UDITA · ICSE (1) 2010 |
Debugging and program repair › automated program repair
test code repair |
0.1 | 1 | 2010 | On test repair using symbolic execution · ISSTA 2010 |
Software testing
test generation |
0.1 | 1 | 2010 | Test generation through programming in UDITA · ICSE (1) 2010 |
Program verification › model checking
explicit-state model checking |
0.1 | 1 | 2008 | State extensions for java pathfinder · ICSE 2008 |
Program verification
model checking |
0.1 | 1 | 2008 | State extensions for java pathfinder · ICSE 2008 |
Software testing
unit testing |
0.0 | 1 | 2011 | ReAssert: a tool for repairing broken unit tests · ICSE 2011 |
Runtime systems and virtual machines › virtual machine implementation
java virtual machine |
0.0 | 1 | 2008 | State extensions for java pathfinder · ICSE 2008 |
Methods — techniques the papers use, named apart from their topics
probabilistic context-free grammar · 0.4natural language processing · 0.4type inhabitation · 0.2corpus-based ranking · 0.2automated repair · 0.1symbolic execution · 0.1non-deterministic execution space exploration · 0.1state comparison · 0.1backtracking · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2015 | Interactive Synthesis Using Free-Form QueriesabstractWe present a new code assistance tool for integrated development environments. Our system accepts free-form queries allowing a mixture of English and Java as an input, and produces Java code fragments that take the query into account and respect syntax, types, and scoping rules of Java as well as statistical usage patterns. The returned results need not have the structure of any previously seen code fragment. As part of our system we have constructed a probabilistic context free grammar for Java constructs and library invocations, as well as an algorithm that uses a customized natural language processing tool chain to extract information from free-form text queries. The evaluation results show that our technique can tolerate much of the flexibility present in natural language, and can also be used to repair incorrect Java expressions that contain useful information about the developer's intent. Our demo video is available at http://youtu.be/tx4-XgAZkKU. Tihomir Gvero, Viktor Kuncak |
ICSE (2) | 1 |
| 2015 | Synthesizing Java expressions from free-form queriesabstractWe present a new code assistance tool for integrated development environments. Our system accepts as input free-form queries containing a mixture of English and Java, and produces Java code expressions that take the query into account and respect syntax, types, and scoping rules of Java, as well as statistical usage patterns. In contrast to solutions based on code search, the results returned by our tool need not directly correspond to any previously seen code fragment. As part of our system we have constructed a probabilistic context free grammar for Java constructs and library invocations, as well as an algorithm that uses a customized natural language processing tool chain to extract information from free-form text queries. We present the results on a number of examples showing that our technique (1) often produces the expected code fragments, (2) tolerates much of the flexibility of natural language, and (3) can repair incorrect Java expressions that use, for example, the wrong syntax or missing arguments. Tihomir Gvero, Viktor Kuncak |
OOPSLA | 1 |
| 2013 | Complete completion using types and weightsabstractDeveloping modern software typically involves composing functionality from existing libraries. This task is difficult because libraries may expose many methods to the developer. To help developers in such scenarios, we present a technique that synthesizes and suggests valid expressions of a given type at a given program point. As the basis of our technique we use type inhabitation for lambda calculus terms in long normal form. We introduce a succinct representation for type judgements that merges types into equivalence classes to reduce the search space, then reconstructs any desired number of solutions on demand. Furthermore, we introduce a method to rank solutions based on weights derived from a corpus of code. We implemented the algorithm and deployed it as a plugin for the Eclipse IDE for Scala. We show that the techniques we incorporated greatly increase the effectiveness of the approach. Our evaluation benchmarks are code examples from programming practice; we make them available for future comparisons. Tihomir Gvero, Viktor Kuncak, Ivan Kuraj, Ruzica Piskac |
PLDI | 1 |
| 2011 | Interactive Synthesis of Code Snippets
Tihomir Gvero, Viktor Kuncak, Ruzica Piskac |
CAV | 1 |
| 2011 | ReAssert: a tool for repairing broken unit testsabstractSuccessful software systems continuously change their requirements and thus code. When this happens, some existing tests get broken because they no longer reflect the intended behavior, and thus they need to be updated. Repairing broken tests can be time-consuming and difficult. Brett Daniel, Danny Dig, Tihomir Gvero, Vilas Jagannath, Johnston Jiaa, Damion Mitchell, Jurand Nogiec, Shin Hwei Tan, Darko Marinov |
ICSE | 3 |
| 2010 | Test generation through programming in UDITAabstractWe present an approach for describing tests using non-deterministic test generation programs. To write such programs, we introduce UDITA, a Java-based language with non-deterministic choice operators and an interface for generating linked structures. We also describe new algorithms that generate concrete tests by efficiently exploring the space of all executions of non-deterministic UDITA programs. Milos Gligoric 0001, Tihomir Gvero, Vilas Jagannath, Sarfraz Khurshid, Viktor Kuncak, Darko Marinov |
ICSE (1) | 2 |
| 2010 | On test repair using symbolic executionabstractWhen developers change a program, regression tests can fail not only due to faults in the program but also due to out-of-date test code that does not reflect the desired behavior of the program. When this occurs, it is necessary to repair test code such that the tests pass. Repairing tests manually is difficult and time consuming. We recently developed ReAssert, a tool that can automatically repair broken unit tests, but only if they lack complex control flow or operations on expected values. Brett Daniel, Tihomir Gvero, Darko Marinov |
ISSTA | 2 |
| 2009 | Optimizing Generation of Object Graphs in Java PathFinderabstractJava PathFinder (JPF) is a popular model checker for Java programs. JPF was used to generate object graphs as test inputs for object-oriented programs. Specifically, JPF was used as an implementation engine for the Korat algorithm. Korat takes two inputs---a Java predicate that encodes properties of desired object graphs and a bound on the size of the graph---and generates all graphs (within the given bound) that satisfy the encoded properties. Korat uses a systematic search to explore the bounded state space of object graphs. Korat search was originally implemented in JPF using a simple instrumentation of the Java predicate. However, JPF is a general-purpose model checker and such direct implementation results in an unnecessarily slow search. We present our results on speeding up Korat search in JPF. The experiments on ten data structure subjects show that our modifications of JPF reduce the search time by over an order of magnitude. Milos Gligoric 0001, Tihomir Gvero, Steven Lauterburg, Darko Marinov, Sarfraz Khurshid |
ICST | 2 |
| 2008 | State extensions for java pathfinderabstractJava PathFinder (JPF) is an explicit-state model checker for Java programs. JPF implements a backtrackable Java Virtual Machine (JVM) that provides non-deterministic choices and control over thread scheduling. JPF is itself implemented in Java and runs on top of a host JVM. JPF represents the JVM state of the program being checked and performs three main operations on this state representation: bytecode execution, state backtracking, and state comparison. This paper summarizes four extensions that we have developed to the JPF state representation and operations. One extension provides a new functionality to JPF, and three extensions improve performance of JPF in various scenarios. Some of our code has already been included in publicly available JPF. Tihomir Gvero, Milos Gligoric 0001, Steven Lauterburg, Marcelo d'Amorim, Darko Marinov, Sarfraz Khurshid |
ICSE | 1 |