14 citations · 31 across the 8 of their papers we have counts for
12 papers
Absynthe: Abstract Interpretation-Guided Synthesis
Sankha Narayan Guria, Jeffrey S. Foster, David Van Horn
Synthesis tools have seen significant success in recent times. However, past approaches often require a complete and accurate embedding of the source language in the logic of the u…
RbSyn: Type- and Effect-Guided Program Synthesis
Sankha Narayan Guria, Jeffrey S. Foster, David Van Horn
In recent years, researchers have explored component-based synthesis, which aims to automatically construct programs that operate by composing calls to existing APIs. However, prio…
An Observational Investigation of Reverse Engineers' Processes
Daniel Votipka, Seth M. Rabin, Kristopher Micinski +2
Reverse engineering is a complex process essential to software-security tasks such as vulnerability discovery and malware analysis. Significant research and engineering effort has…
Making the Cut: A Bandit-based Approach to Tiered Interviewing
Candice Schumann, Zhi Lang, Jeffrey S. Foster +1
Given a huge set of applicants, how should a firm allocate sequential resume screenings, phone interviews, and in-person site visits? In a tiered interview process, later stages (e…
Type-Level Computations for Ruby Libraries
Milod Kazerounian, Sankha Narayan Guria, Niki Vazou +2
Many researchers have explored ways to bring static typing to dynamic languages. However, to date, such systems are not precise enough when types depend on values, which often aris…
iGen: Dynamic Interaction Inference for Configurable Software
ThanhVu Nguyen, Ugur Koc, Javran Cheng +2
To develop, analyze, and evolve today's highly configurable software systems, developers need deep knowledge of a system's configuration options, e.g., how options need to be set t…
Evaluating Design Tradeoffs in Numeric Static Analysis for Java
Shiyi Wei, Piotr Mardziel, Andrew Ruef +2
Numeric static analysis for Java has a broad range of potentially useful applications, including array bounds checking and resource usage estimation. However, designing a scalable…
Refinement Types for Ruby
Milod Kazerounian, Niki Vazou, Austin Bourgerie +2
Refinement types are a popular way to specify and reason about key program properties. In this paper, we introduce RTR, a new system that adds refinement types to Ruby. RTR is buil…
The Diverse Cohort Selection Problem
Candice Schumann, Samsara N. Counts, Jeffrey S. Foster +1
How should a firm allocate its limited interviewing resources to select the optimal cohort of new employees from a large set of job applicants? How should that firm allocate cheap…
Just-in-Time Static Type Checking for Dynamic Languages
Brianna M. Ren, Jeffrey S. Foster
Dynamic languages such as Ruby, Python, and JavaScript have many compelling benefits, but the lack of static types means subtle errors can remain latent in code for a long time. Wh…
JSKETCH: Sketching for Java
Jinseong Jeon, Xiaokang Qiu, Jeffrey S. Foster +1
Sketch-based synthesis, epitomized by the SKETCH tool, lets developers synthesize software starting from a partial program, also called a sketch or template. This paper presents JS…
Checking Interaction-Based Declassification Policies for Android Using Symbolic Execution
Kristopher Micinski, Jonathan Fetter-Degges, Jinseong Jeon +2
Mobile apps can access a wide variety of secure information, such as contacts and location. However, current mobile platforms include only coarse access control mechanisms to prote…