Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Frances Perry

dblp:82/6177 · DBLP profile ↗
← Back
6ranked-venue papers
3as 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 · 5 · 3 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
2 papers
Programming languages and type systems · 57% Program verification · 23% Compilers and program optimization · 20%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Parallel and multicore computing · 68% Hardware reliability and fault tolerance · 22% High-performance computing · 10%
Databases, data mining, and information retrieval
1 paper
Data stream processing · 100%

Topics — the 8 heaviest of 10, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type systems › static typing
typed assembly language
0.222008
Type-preserving compilation for large-scale optimizing object-oriented compilers · PLDI 2008
Fault-tolerant typed assembly language · PLDI 2007
Parallel and multicore computing
data-parallel programming
0.112010
FlumeJava: easy, efficient data-parallel pipelines · PLDI 2010
Parallel and multicore computing
parallel programming models
0.112010
FlumeJava: easy, efficient data-parallel pipelines · PLDI 2010
Compilers and program optimization
optimizing compiler
0.112008
Type-preserving compilation for large-scale optimizing object-oriented compilers · PLDI 2008
Programming languages and type systems › language implementation
type-preserving compilation
0.112008
Type-preserving compilation for large-scale optimizing object-oriented compilers · PLDI 2008
Hardware reliability and fault tolerance › soft errors
transient fault
0.112007
Fault-tolerant typed assembly language · PLDI 2007
High-performance computing › data-intensive computing
large-scale data processing
0.012010
FlumeJava: easy, efficient data-parallel pipelines · PLDI 2010
Program verification
proof-carrying code
0.012008
Type-preserving compilation for large-scale optimizing object-oriented compilers · PLDI 2008

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

windowing semantics · 0.2dataflow model · 0.2type system · 0.1operational semantics · 0.1formal verification · 0.1mapreduce · 0.1dataflow graph optimization · 0.1type-preserving compilation · 0.1
YearPublicationVenuePosition
2015 The Dataflow Model: A Practical Approach to Balancing Correctness, Latency, and Cost in Massive-Scale, Unbounded, Out-of-Order Data Processing
abstract
Unbounded, unordered, global-scale datasets are increasingly common in day-to-day business (e.g. Web logs, mobile usage statistics, and sensor networks). At the same time, consumers of these datasets have evolved sophisticated requirements, such as event-time ordering and windowing by features of the data themselves, in addition to an insatiable hunger for faster answers. Meanwhile, practicality dictates that one can never fully optimize along all dimensions of correctness, latency, and cost for these types of input. As a result, data processing practitioners are left with the quandary of how to reconcile the tensions between these seemingly competing propositions, often resulting in disparate implementations and systems. We propose that a fundamental shift of approach is necessary to deal with these evolved requirements in modern data processing. We as a field must stop trying to groom unbounded datasets into finite pools of information that eventually become complete, and instead live and breathe under the assumption that we will never know if or when we have seen all of our data, only that new data will arrive, old data may be retracted, and the only way to make this problem tractable is via principled abstractions that allow the practitioner the choice of appropriate tradeoffs along the axes of interest: correctness, latency, and cost. In this paper, we present one such approach, the Dataflow Model, along with a detailed examination of the semantics it enables, an overview of the core principles that guided its design, and a validation of the model itself via the real-world experiences that led to its development.
Tyler Akidau, Robert Bradshaw, Craig Chambers, Slava Chernyak, Rafael Fernández-Moctezuma, Reuven Lax, Sam McVeety, Daniel Mills, Frances Perry, Eric Schmidt 0001, Sam Whittle
Proc. VLDB Endow.9
2010 FlumeJava: easy, efficient data-parallel pipelines
abstract
MapReduce and similar systems significantly ease the task of writing data-parallel code. However, many real-world computations require a pipeline of MapReduces, and programming and managing such pipelines can be difficult. We present FlumeJava, a Java library that makes it easy to develop, test, and run efficient data-parallel pipelines. At the core of the FlumeJava library are a couple of classes that represent immutable parallel collections, each supporting a modest number of operations for processing them in parallel. Parallel collections and their operations present a simple, high-level, uniform abstraction over different data representations and execution strategies. To enable parallel operations to run efficiently, FlumeJava defers their evaluation, instead internally constructing an execution plan dataflow graph. When the final results of the parallel operations are eventually needed, FlumeJava first optimizes the execution plan, and then executes the optimized operations on appropriate underlying primitives (e.g., MapReduces). The combination of high-level abstractions for parallel data and computation, deferred evaluation and optimization, and efficient parallel primitives yields an easy-to-use system that approaches the efficiency of hand-optimized pipelines. FlumeJava is in active use by hundreds of pipeline developers within Google.
Craig Chambers, Ashish Raniwala, Frances Perry, Stephen Adams 0001, Robert R. Henry 0001, Robert Bradshaw, Nathan Weizenbaum
PLDI3
2008 Type-preserving compilation for large-scale optimizing object-oriented compilers
abstract
Type-preserving compilers translate well-typed source code, such as Java or C#, into verifiable target code, such as typed assembly language or proof-carrying code. This paper presents the implementation of type-preserving compilation in a complex, large-scale optimizing compiler. Compared to prior work, this implementation supports extensive optimizations, and it verifies a large portion of the interface between the compiler and the runtime system. This paper demonstrates the practicality of type-preserving compilation in complex optimizing compilers: the generated typed assembly language is only 2.3% slower than the base compiler's generated untyped assembly language, and the type-preserving compiler is 82.8% slower than the base compiler.
Chris Hawblitzel, Frances Perry, Michael Emmi, Jeremy Condit, Derrick Coetzee, Polyvios Pratikakis
PLDI3
2008 Reasoning about Control Flow in the Presence of Transient Faults
Frances Perry, David Walker 0001
SAS1
2007 Fault-tolerant typed assembly language
abstract
A transient hardware fault occurs when an energetic particle strikes a transistor, causing it to change state. Although transient faults do not permanently damage the hardware, they may corrupt computations by altering stored values and signal transfers. In this paper, we propose a new scheme for provably safe and reliable computing in the presence of transient hardware faults. In our scheme, software computations are replicated to provide redundancy while special instructions compare the independently computed results to detect errors before writing critical data. In stark contrast to any previous efforts in this area, we have analyzed our fault tolerance scheme from a formal, theoretical perspective. To be specific, first, we provide an operational semantics for our assembly language, which includes a precise formal definition of our fault model. Second, we develop an assembly-level type system designed to detect reliability problems in compiled code. Third, we provide a formal specification for program fault tolerance under the given fault model and prove that all well-typed programs are indeed fault tolerant. In addition to the formal analysis, we evaluate our detection scheme and show that it only takes 34% longer to execute than the unreliable version.
Frances Perry, Lester Mackey, George A. Reis, Jay Ligatti, David I. August, David Walker 0001
PLDI1
2006 Expressing heap-shape contracts in linear logic
abstract
Contracts (dynamically checked programmer assertions) are a widely accepted mechanism for specifying, checking and documenting properties of software components. Most, if not all, contract systems expect programmers to use the native programming language to express their program invariants. While this is most effective for many simple invariants, expressing properties of data structures and aliasing patterns can be extremely complicated. If written in the native language in an unstructured way, such contracts are bound to be unclear and ineffective as documentation. In this paper, we show how to use linear logic as a language of contracts for an imperative programming language. The high-level nature of our linear logical contracts makes specifying memory shape and aliasing properties of complex recursive data structures easy. Moreover, since we give our logic a clear, compositional semantics, the contracts serve as effective, executable documentation for programmer expectations. In order to evaluate the truth of our linear logical contracts at run time, we use a modified version of LolliMon, a linear logic programming language.
Frances Perry, Limin Jia 0001, David Walker 0001
GPCE1