EDBT 2026 Demo / reviewers in the wild / expert
Chandrasekhar Boyapati
dblp:14/4805
· DBLP profile ↗
10ranked-venue papers
6as first author
0since 2021 · last 2010
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 10 · 6 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
9 papers |
Programming languages and type systems · 32% Program verification · 22% Program analysis · 21% | |
| Computer architecture, parallel and distributed computing, and storage systems
2 papers |
Storage systems · 33% Embedded and real-time systems · 33% Memory systems · 33% |
Topics — the 22 heaviest of 22, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program verification › model checking
software model checking |
0.3 | 3 | 2010 | Efficient modular glass box software model checking · OOPSLA 2010 Efficient software model checking of soundness of type systems · OOPSLA 2008 Efficient software model checking of data structure properties · OOPSLA 2006 |
Programming languages and type systems
type systems |
0.2 | 4 | 2008 | Efficient software model checking of soundness of type systems · OOPSLA 2008 Ownership types for object encapsulation · POPL 2003 Ownership types for safe region-based memory management in real-time Java · PLDI 2003 |
Program analysis
state pruning |
0.2 | 3 | 2010 | Efficient modular glass box software model checking · OOPSLA 2010 Efficient software model checking of data structure properties · OOPSLA 2006 Efficient software model checking of soundness of type systems · OOPSLA 2008 |
Programming languages and type systems › type systems
ownership types |
0.1 | 3 | 2003 | Ownership types for object encapsulation · POPL 2003 Ownership types for safe region-based memory management in real-time Java · PLDI 2003 Ownership types for safe programming: preventing data races and deadlocks · OOPSLA 2002 |
Program analysis
static analysis |
0.1 | 2 | 2010 | Efficient software model checking of data structure properties · OOPSLA 2006 Efficient modular glass box software model checking · OOPSLA 2010 |
Programming languages and type systems › type systems
soundness |
0.1 | 1 | 2008 | Efficient software model checking of soundness of type systems · OOPSLA 2008 |
Software maintenance and evolution
software updates |
0.1 | 2 | 2003 | Lazy modular upgrades in persistent object stores · OOPSLA 2003 Ownership types for object encapsulation · POPL 2003 |
Runtime systems and virtual machines
garbage collection |
0.0 | 1 | 2003 | Ownership types for safe region-based memory management in real-time Java · PLDI 2003 |
Programming languages and type systems › object-oriented programming
object encapsulation |
0.0 | 1 | 2003 | Ownership types for object encapsulation · POPL 2003 |
Runtime systems and virtual machines › garbage collection
real-time garbage collection |
0.0 | 1 | 2003 | Ownership types for safe region-based memory management in real-time Java · PLDI 2003 |
Operating systems › resource management › memory management
region-based memory management |
0.0 | 1 | 2003 | Ownership types for safe region-based memory management in real-time Java · PLDI 2003 |
Storage systems › object storage
persistent object store |
0.0 | 1 | 2003 | Lazy modular upgrades in persistent object stores · OOPSLA 2003 |
Embedded and real-time systems › real-time programming languages
real-time java |
0.0 | 1 | 2003 | Ownership types for safe region-based memory management in real-time Java · PLDI 2003 |
Memory systems › memory management
region-based memory management |
0.0 | 1 | 2003 | Ownership types for safe region-based memory management in real-time Java · PLDI 2003 |
Concurrent programming
concurrency correctness |
0.0 | 1 | 2002 | Ownership types for safe programming: preventing data races and deadlocks · OOPSLA 2002 |
Software testing
test generation |
0.0 | 1 | 2002 | Korat: automated testing based on Java predicates · ISSTA 2002 |
Program verification
property checking |
0.0 | 1 | 2010 | Efficient modular glass box software model checking · OOPSLA 2010 |
Concurrent programming › concurrency bugs
data races |
0.0 | 1 | 2001 | A Parameterized Type System for Race-Free Java Programs · OOPSLA 2001 |
Concurrent programming › concurrency bug detection
data race detection |
0.0 | 1 | 2001 | A Parameterized Type System for Race-Free Java Programs · OOPSLA 2001 |
Program verification › model checking
bounded model checking |
0.0 | 1 | 2006 | Efficient software model checking of data structure properties · OOPSLA 2006 |
Operating systems › resource management › storage management
persistent object stores |
0.0 | 1 | 2003 | Ownership types for object encapsulation · POPL 2003 |
Requirements engineering and software design
formal specification |
0.0 | 1 | 2002 | Korat: automated testing based on Java predicates · ISSTA 2002 |
Methods — techniques the papers use, named apart from their topics
state space pruning · 0.3static type system · 0.1small-step operational semantics · 0.1object encapsulation · 0.1program analysis · 0.1test oracle · 0.0ownership types · 0.0bounded exhaustive search · 0.0type inference · 0.0type annotations · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2010 | Efficient modular glass box software model checkingabstractGlass box software model checking incorporates novel techniques to identify similarities in the state space of a model checker and safely prune large numbers of redundant states without explicitly checking them. It is significantly more efficient than other software model checking approaches for checking certain kinds of programs and program properties. Michael Roberson, Chandrasekhar Boyapati |
OOPSLA | 2 |
| 2008 | Efficient software model checking of soundness of type systemsabstractThis paper presents novel techniques for checking the soundness of a type system automatically using a software model checker. Our idea is to systematically generate every type correct intermediate program state (within some finite bounds), execute the program one step forward if possible using its small step operational semantics, and then check that the resulting intermediate program state is also type correct--but do so efficiently by detecting similarities in this search space and pruning away large portions of the search space. Thus, given only a specification of type correctness and the small step operational semantics for a language, our system automatically checks type soundness by checking that the progress and preservation theorems hold for the language (albeit for program states of at most some finite size). Our preliminary experimental results on several languages--including a language of integer and boolean expressions, a simple imperative programming language, an object-oriented language which is a subset of Java, and a language with ownership types--indicate that our approach is feasible and that our search space pruning techniques do indeed significantly reduce what is otherwise an extremely large search space. Our paper thus makes contributions both in the area of checking soundness of type systems, and in the area of reducing the state space of a software model checker. Michael Roberson, Melanie Harries, Paul T. Darga, Chandrasekhar Boyapati |
OOPSLA | 4 |
| 2007 | A type system for preventing data races and deadlocks in the java virtual machine language: 1abstractIn previous work on SafeJava we presented a type system extension to the Java source language that statically prevents data races and deadlocks in multithreaded programs. SafeJava is expressive enough to support common programming patterns, its type checking is fast and scalable, and it requires little programming overhead. SafeJava thus offers a promising approach for making multithreaded programs more reliable. This paper presents a corresponding type system extension for the Java virtual machine language (JVML). We call the resulting language SafeJVML. Well-typed SafeJVML programs are guaranteed to be free of data races and deadlocks. Designing a corresponding type system for JVML is important because most Java code is shipped in the JVML format. Designing acorresponding type system for JVML is nontrivial because of important differences between Java and JVML. In particular, the absence of block structure in JVML programs and the fact that they do not use named local variables the way Java programs do make the type systems for Java and JVML significantly different. For example, verifying absence of races and deadlocks in JVML programs requires performing an alias analysis, something that was not necessary for verifying absence of races and deadlocks in Java programs. This paper presents static and dynamic semantics for Safe JVML. It also includes a proof that the SafeJVML type system is sound and that it prevents data races and deadlocks. To the best of our knowledge, this is the first type system for JVML that statically ensures absence of synchronization errors. Pratibha Permandla, Michael Roberson, Chandrasekhar Boyapati |
LCTES | 3 |
| 2006 | Efficient software model checking of data structure propertiesabstractThis paper presents novel language and analysis techniques that significantly speed up software model checking of data structure properties. Consider checking a red-black tree implementation. Traditional software model checkers systematically generate all red-black tree states (within some given bounds) and check every red-black tree operation (such as insert, delete, or lookup) on every red-black tree state. Our key idea is as follows. As our checker checks a red-black tree operation o on a red-black tree state s, it uses program analysis techniques to identify other red-black tree states s'1, s'2, ..., s'k on which the operation o behaves similarly. Our analyses guarantee that if o executes correctly on s, then o will execute correctly on every s'i. Our checker therefore does not need to check o on any s'i once it checks o on s. It thus safely prunes those state transitions from its search space, while still achieving complete test coverage within the bounded domain. Our preliminary results show orders of magnitude improvement over previous approaches. We believe our techniques can make model checking significantly faster, and thus enable checking of much larger programs and complex program properties than currently possible. Paul T. Darga, Chandrasekhar Boyapati |
OOPSLA | 2 |
| 2003 | Lazy modular upgrades in persistent object storesabstractPersistent object stores require a way to automatically upgrade persistent objects. Automatic upgrades are a challenge for such systems. Upgrades must be performed in a way that is efficient both in space and time, and that does not stop application access to the store. In addition, however, the approach must be modular: it must allow programmers to reason locally about the correctness of their upgrades similar to the way they would reason about regular code. This paper provides solutions to both problems. The paper first defines upgrade modularity conditions that any upgrade system must satisfy to support local reasoning about upgrades. The paper then describes a new approach for executing upgrades efficiently while satisfying the upgrade modularity conditions. The approach exploits object encapsulation properties in a novel way. The paper also describes a prototype implementation and shows that our upgrade system imposes only a small overhead on application performance. Chandrasekhar Boyapati, Barbara Liskov, Liuba Shrira, Chuang-Hue Moh, Steven Richman |
OOPSLA | 1 |
| 2003 | Ownership types for safe region-based memory management in real-time JavaabstractThe Real Time Specification for Java (RTSJ) allows a program to create real-time threads with hard real-time constraints. Real-time threads use region-based memory management to avoid unbounded pauses caused by interference from the garbage collector. The RTSJ uses runtime checks to ensure that deleting a region does not create dangling references and that real-time threads do not access references to objects allocated in the garbage-collected heap. This paper presents a static type system that guarantees that these runtime checks will never fail for well-typed programs. Our type system therefore 1) provides an important safety guarantee for real-time programs and 2) makes it possible to eliminate the runtime checks and their associated overhead.Our system also makes several contributions over previous work on region types. For object-oriented programs, it combines the benefits of region types and ownership types in a unified type system framework. For multithreaded programs, it allows long-lived threads to share objects without using the heap and without memory leaks. For real-time programs, it ensures that real-time threads do not interfere with the garbage collector. Our experience indicates that our type system is sufficiently expressive and requires little programming overhead, and that eliminating the RTSJ runtime checks using a static type system can significantly decrease the execution time of real-time programs. Chandrasekhar Boyapati, Alexandru Salcianu, William S. Beebee, Martin C. Rinard |
PLDI | 1 |
| 2003 | Ownership types for object encapsulationabstractOwnership types provide a statically enforceable way of specifying object encapsulation and enable local reasoning about program correctness in object-oriented languages. However, a type system that enforces strict object encapsulation is too constraining: it does not allow efficient implementation of important constructs like iterators. This paper argues that the right way to solve the problem is to allow objects of classes defined in the same module to have privileged access to each other's representations; we show how to do this for inner classes. This approach allows programmers to express constructs like iterators and yet supports local reasoning about the correctness of the classes, because a class and its inner classes together can be reasoned about as a module. The paper also sketches how we use our variant of ownership types to enable efficient software upgrades in persistent object stores. Chandrasekhar Boyapati, Barbara Liskov, Liuba Shrira |
POPL | 1 |
| 2002 | Korat: automated testing based on Java predicatesabstractThis paper presents Korat, a novel framework for automated testing of Java programs. Given a formal specification for a method, Korat uses the method precondition to automatically generate all (nonisomorphic) test cases up to a given small size. Korat then executes the method on each test case, and uses the method postcondition as a test oracle to check the correctness of each output.To generate test cases for a method, Korat constructs a Java predicate (i.e., a method that returns a boolean) from the method's pre-condition. The heart of Korat is a technique for automatic test case generation: given a predicate and a bound on the size of its inputs, Korat generates all (nonisomorphic) inputs for which the predicate returns true. Korat exhaustively explores the bounded input space of the predicate but does so efficiently by monitoring the predicate's executions and pruning large portions of the search space.This paper illustrates the use of Korat for testing several data structures, including some from the Java Collections Framework. The experimental results show that it is feasible to generate test cases from Java predicates, even when the search space for inputs is very large. This paper also compares Korat with a testing framework based on declarative specifications. Contrary to our initial expectation, the experiments show that Korat generates test cases much faster than the declarative framework. Chandrasekhar Boyapati, Sarfraz Khurshid, Darko Marinov |
ISSTA | 1 |
| 2002 | Ownership types for safe programming: preventing data races and deadlocksabstractThis paper presents a new static type system for multithreaded programs; well-typed programs in our system are guaranteed to be free of data races and deadlocks. Our type system allows programmers to partition the locks into a fixed number of equivalence classes and specify a partial order among the equivalence classes. The type checker then statically verifies that whenever a thread holds more than one lock, the thread acquires the locks in the descending order.Our system also allows programmers to use recursive tree-based data structures to describe the partial order. For example, programmers can specify that nodes in a tree must be locked in the tree order. Our system allows mutations to the data structure that change the partial order at runtime. The type checker statically verifies that the mutations do not introduce cycles in the partial order, and that the changing of the partial order does not lead to deadlocks. We do not know of any other sound static system for preventing deadlocks that allows changes to the partial order at runtime.Our system uses a variant of ownership types to prevent data races and deadlocks. Ownership types provide a statically enforceable way of specifying object encapsulation. Ownership types are useful for preventing data races and deadlocks because the lock that protects an object can also protect its encapsulated objects. This paper describes how to use our type system to statically enforce object encapsulation as well as prevent data races and deadlocks. The paper also contains a detailed discussion of different ownership type systems and the encapsulation guarantees they provide. Chandrasekhar Boyapati, Robert Lee, Martin C. Rinard |
OOPSLA | 1 |
| 2001 | A Parameterized Type System for Race-Free Java Programsabstract... programs; any well-typed program in our system is free of data races. Our type system is significantly more expressive than previous such type systems. In particular, our system lets programmers write generic code to implement a class, then create dierent objects of the same class that have different protection mechanisms. This flexibility enables programmers to reduce the number of unnecessary synchronization operations in a program without risking data races. We also support default types which reduce the burden of writing the extra type annotations. Our experience indicates that our system provides a promising approach to make multithreaded programs more reliable and efficient. Chandrasekhar Boyapati, Martin C. Rinard |
OOPSLA | 1 |