Christopher Colby

dblp:64/204 · DBLP profile ↗
← Back
8ranked-venue papers
7as first author
0since 2021 · last 2020
—ORCID · none

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

Software engineering, systems software and programming languages · 6 · 6 first-authorTheory of computation · 2 · 2 first-authorDatabases, data management, data science and information retrieval · 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
4 papers
Program verification · 49% Compilers and program optimization · 30% Program analysis · 11%
Network and information security
2 papers
Systems and software security · 100%

Topics — the 13 heaviest of 14, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program verification
proof-carrying code
0.122000
A certifying compiler for Java · PLDI 2000
A Proof-Carrying Code Architecture for Java · CAV 2000
Compilers and program optimization
compiler correctness
0.012000
A certifying compiler for Java · PLDI 2000
Programming languages and type systems
type systems
0.012000
A Proof-Carrying Code Architecture for Java · CAV 2000
Compilers and program optimization
verified compilation
0.012000
A certifying compiler for Java · PLDI 2000
Program verification
environment generation
0.011998
Automatically Closing Open Reactive Programs · PLDI 1998
Program verification
model checking
0.011998
Automatically Closing Open Reactive Programs · PLDI 1998
Program verification
reactive system verification
0.011998
Automatically Closing Open Reactive Programs · PLDI 1998
Program verification › model checking
state space exploration
0.011998
Automatically Closing Open Reactive Programs · PLDI 1998
Program analysis › static analysis
pointer analysis
0.011996
Trace-Based Program Analysis · POPL 1996
Compilers and program optimization › instruction scheduling
software pipelining
0.011996
Trace-Based Program Analysis · POPL 1996
Program analysis › dynamic analysis
trace analysis
0.011996
Trace-Based Program Analysis · POPL 1996
Systems and software security
language-based security
0.012000
A Proof-Carrying Code Architecture for Java · CAV 2000
Systems and software security
memory safety
0.012000
A certifying compiler for Java · PLDI 2000

Methods — techniques the papers use, named apart from their topics

type inference · 0.1proof-carrying code · 0.1proof checking · 0.1program transformation · 0.0nondeterministic closure · 0.0
YearPublicationVenuePosition
2020 Demonstrating Principled Uncertainty Modeling for Recommender Ecosystems with RecSim NG
abstract
We develop RecSim NG, a probabilistic platform that supports natural, concise specification and learning of models for multi-agent recommender systems simulation. RecSim NG is a scalable, modular, differentiable simulator implemented in Edward2 and TensorFlow.
Martin Mladenov, Vihan Jain, Eugene Ie, Christopher Colby, Nicolas Mayoraz, Hubert Pham, Dustin Tran, Ivan Vendrov, Craig Boutilier
RecSys5
2003 Automated techniques for provably safe mobile code
Christopher Colby, Karl Crary, Robert Harper 0001, Peter Lee 0001, Frank Pfenning
Theor. Comput. Sci.1
2000 A Proof-Carrying Code Architecture for Java
Christopher Colby, Peter Lee 0001, George C. Necula
CAV1
2000 A certifying compiler for Java
abstract
This paper presents the initial results of a project to determine if the techniques of proof-carrying code and certifying compilers can be applied to programming languages of realistic size and complexity. The experiment shows that: (1) it is possible to implement a certifying native-code compiler for a large subset of the Java programming language; (2) the compiler is freely able to apply many standard local and global optimizations; and (3) the PCC binaries it produces are of reasonable size and can be rapidly checked for type safety by a small proof-checker. This paper also presents further evidence that PCC provides several advantages for compiler development. In particular, generating proofs of the target code helps to identify compiler bugs, many of which would have been dicult to discover by testing.
Christopher Colby, Peter Lee 0001, George C. Necula, Fred Blau, Mark Plesko, Kenneth Cline
PLDI1
1998 Automatically Closing Open Reactive Programs
abstract
We study in this paper the problem of analyzing implementations of open systems --- systems in which only some of the components are present. We present an algorithm for automatically closing an open concurrent reactive system with its most general environment, i.e., the environment that can provide any input at any time to the system. The result is a nondeterministic closed (i.e., self-executable) system which can exhibit all the possible reactive behaviors of the original open system. These behaviors can then be analyzed using VeriSoft, an existing tool for systematically exploring the state spaces of closed systems composed of multiple (possibly nondeterministic) processes executing arbitrary code. We have implemented the techniques introduced in this paper in a prototype tool for automatically closing open programs written in the C programming language. We discuss preliminary experimental results obtained with a large telephone-switching software application developed at Lucent Technologies.
Christopher Colby, Patrice Godefroid, Lalita Jategaonkar Jagadeesan
PLDI1
1996 Trace-Based Program Analysis
abstract
We present trace-based program analysis, a semantics-based framework for statically analyzing and transforming programs with loops, assignments, and nested record structures. Trace-based analyses are based on transfer transition systems, which define the small-step operational semantics of programming languages. Intuitively, transfer transition systems provide direct support for reasoning about the possible execution traces of a program, instead of just individual program states. The traces in a transfer transition system have many uses, including the finite representation of all possible terminating executions of a loop. Also, traces may be systematically "pieced together," thus allowing the composition of separately analyzed program fragments. The utility of the approach is demonstrated by showing three applications: software pipelining, loop-invariant removal, and data alias detection. 1 Introduction In this paper, we consider semantics-based program analysis for the purposes of s...
Christopher Colby, Peter Lee 0001
POPL1
1995 Analyzing the Communication Topology of Concurrent Programs
abstract
Concurrent languages present complex problems for program analysis. Existing analyses are either imprecise, exponential, or apply only to languages with statically-allocated processes and channels. We present a new polynomial-time analysis using abstract interpretation that addresses the general problem of determining the communication topology of programs in a subset of Concurrent ML with arbitrary data structures, recursive higher-order functions, dynamic processor allocation, dynamic channel creation, and synchronous message-passing operations transmitand receive. The analysis addresses the following question: Which occurrences of transmit can match which occurrences of receive? The notion of occurrence is formalized as a control path in a small-step semantics, which provides a powerful basis for distinguishing recursive communication topologies. The analysis is relational, in that it relates pairs of processes, and non-uniform, in that it distinguishes between iterations in an i...
Christopher Colby
PEPM1
1995 Determining Storage Properties of Sequential and Concurrent Programs with Assignment and Structured Data
Christopher Colby
SAS1