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

Michael James 0003

dblp:94/3826-3 · also Michael B. James · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Program synthesis and code generation
type-directed synthesis
0.922020
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.812024
Validating AI-Generated Code with Live Programming · CHI 2024
Human-AI interaction › AI-mediated work
AI-assisted programming
0.712023
Grounded Copilot: How Programmers Interact with Code-Generating Models · Proc. ACM Program. Lang. 2023
Empirical software engineering
developer studies
0.712023
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.412020
Digging for fold: synthesis-aided API discovery for Haskell · Proc. ACM Program. Lang. 2020
Programming languages and type systems › type systems
polymorphism
0.412020
Program synthesis by type-guided abstraction refinement · Proc. ACM Program. Lang. 2020
Human-AI interaction › human-AI collaboration
programmer-AI collaboration
0.212024
Validating AI-Generated Code with Live Programming · CHI 2024
Program synthesis and code generation
code generation with language models
0.212023
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.112020
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
YearPublicationVenuePosition
2024 Validating AI-Generated Code with Live Programming
abstract
AI-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
CHI3
2023 Grounded Copilot: How Programmers Interact with Code-Generating Models
abstract
Powered 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 refinement
abstract
We 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 Haskell
abstract
We 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