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.

Jaeheon Yi

dblp:41/6405 · DBLP profile ↗
← Back
8ranked-venue papers
4as 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 · 7 · 3 first-authorSystems, architecture and hardware · 1 · 1 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
5 papers
Concurrent programming · 66% Program analysis · 17% Programming languages and type systems · 15%

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

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bugs
0.332012
Sound predictive race detection in polynomial time · POPL 2012
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs · PLDI 2008
Cooperative types for controlling thread interference in Java · ISSTA 2012
Concurrent programming › concurrency bug detection
data race detection
0.112012
Sound predictive race detection in polynomial time · POPL 2012
Program analysis › dynamic analysis
happens-before analysis
0.112012
Sound predictive race detection in polynomial time · POPL 2012
Concurrent programming › concurrency bug detection › data race detection
predictive race detection
0.112012
Sound predictive race detection in polynomial time · POPL 2012
Programming languages and type systems
type systems
0.112012
Cooperative types for controlling thread interference in Java · ISSTA 2012
Concurrent programming
parallel programming models
0.112011
Two for the price of one: a model for parallel and incremental computation · OOPSLA 2011
Programming languages and type systems › programming paradigms
self-adjusting computation
0.112011
Two for the price of one: a model for parallel and incremental computation · OOPSLA 2011
Concurrent programming
synchronization
0.112011
Cooperative reasoning for preemptive execution · PPoPP 2011
Concurrent programming
transactional memory
0.112011
Cooperative reasoning for preemptive execution · PPoPP 2011
Program analysis
dynamic analysis
0.122011
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs · PLDI 2008
Cooperative reasoning for preemptive execution · PPoPP 2011
Concurrent programming › concurrency verification
atomicity verification
0.112008
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs · PLDI 2008
Concurrent programming › concurrency bug detection
atomicity violation detection
0.112008
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs · PLDI 2008
Concurrent programming › concurrency bugs
thread interference
0.012012
Cooperative types for controlling thread interference in Java · ISSTA 2012
Program analysis › static analysis
incremental analysis
0.012011
Two for the price of one: a model for parallel and incremental computation · OOPSLA 2011
Concurrent programming
atomicity
0.012008
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs · PLDI 2008
Program verification
correctness conditions
0.012008
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs · PLDI 2008

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

dynamic analysis · 0.2yield annotations · 0.1type system · 0.1annotation inference · 0.1
YearPublicationVenuePosition
2015 Cooperative types for controlling thread interference in Java
Jaeheon Yi, Tim Disney, Stephen N. Freund, Cormac Flanagan
Sci. Comput. Program.1
2012 Cooperative types for controlling thread interference in Java
abstract
Multithreaded programs are notoriously prone to unintended interference between concurrent threads. To address this problem, we argue that yield annotations in the source code should document all thread interference, and we present a type system for verifying the absence of undocumented interference in Java programs. Under this type system, well-typed programs behave as if context switches occur only at yield annotations. Thus, well-typed programs can be understood using intuitive sequential reasoning, except where yield annotations remind the programmer to account for thread interference.
Jaeheon Yi, Tim Disney, Stephen N. Freund, Cormac Flanagan
ISSTA1
2012 The evolution of data races
abstract
Concurrency bugs are notoriously difficult to find and fix. Several prior empirical studies have identified the prevalence and challenges of concurrency bugs in open source projects, and several existing tools can be used to identify concurrency errors such as data races. However, little is known about how concurrency bugs evolve over time. In this paper, we examine the evolution of data races by analyzing samples of the committed code in two open source projects over a multi-year period. Specifically, we identify how the data races in these programs change over time.
Caitlin Sadowski, Jaeheon Yi, Sunghun Kim 0001
MSR2
2012 Sound predictive race detection in polynomial time
abstract
Data races are among the most reliable indicators of programming errors in concurrent software. For at least two decades, Lamport's happens-before (HB) relation has served as the standard test for detecting races--other techniques, such as lockset-based approaches, fail to be sound, as they may falsely warn of races. This work introduces a new relation, causally-precedes (CP), which generalizes happens-before to observe more races without sacrificing soundness. Intuitively, CP tries to capture the concept of happens-before ordered events that must occur in the observed order for the program to observe the same values. What distinguishes CP from past predictive race detection approaches (which also generalize an observed execution to detect races in other plausible executions) is that CP-based race detection is both sound and of polynomial complexity. We demonstrate that the unique aspects of CP result in practical benefit. Applying CP to real-world programs, we successfully analyze server-level applications (e.g., Apache FtpServer) and show that traces longer than in past predictive race analyses can be analyzed in mere seconds to a few minutes. For these programs, CP race detection uncovers races that are hard to detect by repeated execution and HB race detection: a single run of CP race detection produces several races not discovered by 10 separate rounds of happens-before race detection.
Yannis Smaragdakis, Jacob Evans, Caitlin Sadowski, Jaeheon Yi, Cormac Flanagan
POPL4
2011 Two for the price of one: a model for parallel and incremental computation
abstract
Parallel or incremental versions of an algorithm can significantly outperform their counterparts, but are often difficult to develop. Programming models that provide appropriate abstractions to decompose data and tasks can simplify parallelization. We show in this work that the same abstractions can enable both parallel and incremental execution. We present a novel algorithm for parallel self-adjusting computation. This algorithm extends a deterministic parallel programming model (concurrent revisions) with support for recording and repeating computations. On record, we construct a dynamic dependence graph of the parallel computation. On repeat, we reexecute only parts whose dependencies have changed.
Sebastian Burckhardt, Daan Leijen, Caitlin Sadowski, Jaeheon Yi, Thomas Ball 0001
OOPSLA4
2011 Cooperative reasoning for preemptive execution
abstract
We propose a cooperative methodology for multithreaded software, where threads use traditional synchronization idioms such as locks, but additionally document each point of potential thread interference with a "yield" annotation. Under this methodology, code between two successive yield annotations forms a serializable transaction that is amenable to sequential reasoning. This methodology reduces the burden of reasoning about thread interleavings by indicating only those interference points that matter. We present experimental results showing that very few yield annotations are required, typically one or two per thousand lines of code. We also present dynamic analysis algorithms for detecting cooperability violations, where thread interference is not documented by a yield, and for yield annotation inference for legacy software.
Jaeheon Yi, Caitlin Sadowski, Cormac Flanagan
PPoPP1
2011 Cooperative Concurrency for a Multicore World - (Extended Abstract)
Jaeheon Yi, Caitlin Sadowski, Stephen N. Freund, Cormac Flanagan
RV1
2008 Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs
abstract
Atomicity is a fundamental correctness property in multithreaded programs, both because atomic code blocks are amenable to sequential reasoning (which significantly simplifies correctness arguments), and because atomicity violations often reveal defects in a program's synchronization structure. Unfortunately, all atomicity analyses developed to date are incomplete in that they may yield false alarms on correctly synchronized programs, which limits their usefulness.
Cormac Flanagan, Stephen N. Freund, Jaeheon Yi
PLDI3