Demo Data from EDBT 2026 / reviewers in the wild / expert
Michael James 0003
dblp:94/3826-3 · also Michael B. James
· DBLP profile ↗
4ranked-venue papers
1as first author
2since 2021 · last 2024
0009-0007-2219-9355ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 3 · 1 first-author · 1 since 2021Human-computer interaction and ubiquitous computing · 1 · 1 since 2021
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 |
Programming languages and type systems · 38% Empirical software engineering · 31% Program synthesis and code generation · 31% | |
| Human-computer interaction and pervasive computing
2 papers |
Human-AI interaction · 100% |
Topics — the 9 heaviest of 10, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program synthesis and code generation
type-directed synthesis |
0.9 | 2 | 2020 | Digging for fold: synthesis-aided API discovery for Haskell · Proc. ACM Program. Lang. 2020 Program synthesis by type-guided abstraction refinement · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems › programming environment
live programming |
0.8 | 1 | 2024 | Validating AI-Generated Code with Live Programming · CHI 2024 |
Human-AI interaction › AI-mediated work
AI-assisted programming |
0.7 | 1 | 2023 | Grounded Copilot: How Programmers Interact with Code-Generating Models · Proc. ACM Program. Lang. 2023 |
Empirical software engineering
developer studies |
0.7 | 1 | 2023 | Grounded Copilot: How Programmers Interact with Code-Generating Models · Proc. ACM Program. Lang. 2023 |
Empirical software engineering › mining software repositories › source-code mining
API mining |
0.4 | 1 | 2020 | Digging for fold: synthesis-aided API discovery for Haskell · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems › type systems
polymorphism |
0.4 | 1 | 2020 | Program synthesis by type-guided abstraction refinement · Proc. ACM Program. Lang. 2020 |
Human-AI interaction › human-AI collaboration
programmer-AI collaboration |
0.2 | 1 | 2024 | Validating AI-Generated Code with Live Programming · CHI 2024 |
Program synthesis and code generation
code generation with language models |
0.2 | 1 | 2023 | Grounded Copilot: How Programmers Interact with Code-Generating Models · Proc. ACM Program. Lang. 2023 |
Programming languages and type systems › type systems › polymorphism
type classes |
0.1 | 1 | 2020 | Program synthesis by type-guided abstraction refinement · Proc. ACM Program. Lang. 2020 |
Methods — techniques the papers use, named apart from their topics
between-subjects study · 1.5grounded theory · 1.3type inference · 0.4proof search · 0.4program synthesis · 0.4graph reachability · 0.4abstraction refinement · 0.4
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Validating AI-Generated Code with Live ProgrammingabstractAI-powered programming assistants are increasingly gaining popularity, with GitHub Copilot alone used by over a million developers worldwide. These tools are far from perfect, however, producing code suggestions that may be incorrect in subtle ways. As a result, developers face a new challenge: validating AI’s suggestions. This paper explores whether Live Programming (LP), a continuous display of a program’s runtime values, can help address this challenge. To answer this question, we built a Python editor that combines an AI-powered programming assistant with an existing LP environment. Using this environment in a between-subjects study (N = 17), we found that by lowering the cost of validation by execution, LP can mitigate over- and under-reliance on AI-generated programs and reduce the cognitive load of validation for certain types of tasks. Kasra Ferdowsifard, Ruanqianqian (Lisa) Huang, Michael James 0003, Nadia Polikarpova, Sorin Lerner |
CHI | 3 |
| 2023 | Grounded Copilot: How Programmers Interact with Code-Generating ModelsabstractPowered by recent advances in code-generating models, AI assistants like Github Copilot promise to change the face of programming forever. But what is this new face of programming? We present the first grounded theory analysis of how programmers interact with Copilot, based on observing 20 participants—with a range of prior experience using the assistant—as they solve diverse programming tasks across four languages. Our main finding is that interactions with programming assistants are bimodal : in acceleration mode , the programmer knows what to do next and uses Copilot to get there faster; in exploration mode , the programmer is unsure how to proceed and uses Copilot to explore their options. Based on our theory, we provide recommendations for improving the usability of future AI programming assistants. Shraddha Barke, Michael James 0003, Nadia Polikarpova |
Proc. ACM Program. Lang. | 2 |
| 2020 | Program synthesis by type-guided abstraction refinementabstractWe consider the problem of type-directed component-based synthesis where, given a set of (typed) components and a query type , the goal is to synthesize a term that inhabits the query. Classical approaches based on proof search in intuitionistic logics do not scale up to the standard libraries of modern languages, which span hundreds or thousands of components. Recent graph reachability based methods proposed for Java do scale, but only apply to monomorphic data and components: polymorphic data and components infinitely explode the size of the graph that must be searched, rendering synthesis intractable. We introduce type-guided abstraction refinement (TYGAR), a new approach for scalable type-directed synthesis over polymorphic datatypes and components. Our key insight is that we can overcome the explosion by building a graph over abstract types which represent a potentially unbounded set of concrete types. We show how to use graph reachability to search for candidate terms over abstract types, and introduce a new algorithm that uses proofs of untypeability of ill-typed candidates to iteratively refine the abstraction until a well-typed result is found. We have implemented TYGAR in H+, a tool that takes as input a set of Haskell libraries and a query type, and returns a Haskell term that uses functions from the provided libraries to implement the query type. Our support for polymorphism allows H+ to work with higher-order functions and type classes, and enables more precise queries due to parametricity. We have evaluated H+ on 44 queries using a set of popular Haskell libraries with a total of 291 components. H+ returns an interesting solution within the first five results for 32 out of 44 queries. Our results show that TYGAR allows H+ to rapidly return well-typed terms, with the median time to first solution of just 1.4 seconds. Moreover, we observe that gains from iterative refinement over exhaustive enumeration are more pronounced on harder queries. Zheng Guo 0003, Michael James 0003, David Justo, Jiaxiao Zhou, Ziteng Wang 0001, Ranjit Jhala, Nadia Polikarpova |
Proc. ACM Program. Lang. | 2 |
| 2020 | Digging for fold: synthesis-aided API discovery for HaskellabstractWe present Hoogle+, a web-based API discovery tool for Haskell. A Hoogle+ user can specify a programming task using either a type, a set of input-output tests, or both. Given a specification, the tool returns a list of matching programs composed from functions in popular Haskell libraries, and annotated with automatically-generated examples of their behavior. These features of Hoogle+ are powered by three novel techniques. First, to enable efficient type-directed synthesis from tests only, we develop an algorithm that infers likely type specifications from tests . Second, to return high-quality programs even with ambiguous specifications, we develop a technique that automatically eliminates meaningless and repetitive synthesis results . Finally, we show how to extend this elimination technique to automatically generate informative inputs that can be used to demonstrate program behavior to the user. To evaluate the effectiveness of Hoogle+ compared with traditional API search techniques, we perform a user study with 30 participants of varying Haskell proficiency. The study shows that programmers equipped with Hoogle+ generally solve tasks faster and were able to solve 50% more tasks overall. Michael James 0003, Zheng Guo 0003, Ziteng Wang 0001, Shivani Doshi, Hila Peleg, Ranjit Jhala, Nadia Polikarpova |
Proc. ACM Program. Lang. | 1 |