PLAITLab

PLAITLab

Programming Languages for Approachable and Inclusive Tools

@ UC Berkeley EECS

University of California, Berkeley Logo

Research Themes

PL for Social Good

We invent usable programming tools to help teams working for social good—social scientists, journalists, lawyers, domain experts focused on marginalized groups. (Working for social good and struggling to write code or process data? Get in touch!)

PL+HCI

We combine techniques from Programming Languages and Human-Computer Interaction to make programming languages and programming tools that work better for coders and non-coders alike.

News

New paper at FAccT '23

6/15/2023

Hellina published the first paper of her Ph.D. journey at FAccT 2023! Check out Co-Designing for Transparency: Lessons from Building a Document Organization Tool in the Criminal Justice Domain.

Two papers at CHI '23 ⛵

4/23/2023

Parker and Eric each published the first papers in their Ph.D. journies! Check out A Need-Finding Study with Users of Geospatial Data and Understanding Version Control as Material Interaction with Quickpose.

PLAIT goes to Napa

4/17/2023

Justin, Eric, and Parker all presented their research at this spring's EPIC Data Lab retreat in Napa, CA.

PLATEAU 2023

2/14/2023

Jeremy, Jacob, Kevin, and Justin headed to PLATEAU 2023 to present their workshop paper Searching for Incidental Specifications!

People

Projects

A Need-Finding Study with Users of Geospatial Data

A Need-Finding Study with Users of Geospatial Data

A Need-Finding Study with Users of Geospatial Data on ACM DLA Need-Finding Study with Users of Geospatial Data on Youtube

A contextual inquiry study exploring the challenges users face in finding, transforming, analyzing, and visualizing geospatial data, drawing on participants from Earth and climate science, the social sciences, and data journalism.

DOT: Building a Document Organization tool for the Criminal Justice Domain

DOT: Building a Document Organization tool for the Criminal Justice Domain

DOT: Building a Document Organization tool for the Criminal Justice Domain on GitHubDOT: Building a Document Organization tool for the Criminal Justice Domain on ACM DLDOT: Building a Document Organization tool for the Criminal Justice Domain on Youtube

A cross-discipline co-design project to build a Document Organization Tool for public defenders and investigative journalists working on police use-of-force and misconduct data disclosures.

Entity Extraction From Police Records

Entity Extraction From Police Records

Program synthesis tool to match documents based on locational similarities.

Equivalence by Canonicalization for Synthesis-Backed Refactoring

cobbler: The Component-Based Refactoring Synthesizer

cobbler: The Component-Based Refactoring Synthesizer on GitHubcobbler: The Component-Based Refactoring Synthesizer on ACM DL

A program synthesizer that synthesizes compositions of library components equivalent to user-provided code using a novel and fast program equivalence check. Refactors thousands of real-world programs!

Syntactic Code Search with Sequence-to-Tree Matching

Syntactic Code Search with Sequence-to-Tree Matching

Syntactic Code Search with Sequence-to-Tree Matching on GitHubSyntactic Code Search with Sequence-to-Tree Matching on ACM DL

A new lightweight code search query language based on tokenizers and tree automatas to support accurate and incremental syntactic search queries for interactive settings.

Exploring the Learnability of Program Synthesizers by Novice Programmers

Exploring the Learnability of Program Synthesizers by Novice Programmers

Exploring the Learnability of Program Synthesizers by Novice Programmers on ACM DLExploring the Learnability of Program Synthesizers by Novice Programmers on Youtube

A thematic analysis on the first-use usability of program synthesizers by novice programmers, including findings on specification modalities, interpreting synthesis outputs, and user behaviors.

Change in Software Ecosystems

Change in Software Ecosystems

An analysis of social challenges to propagate breaking changes in existing software ecosystems to discover opportunities for new techniques to automate upgrades.

Simplifying Refinement Types

Simplifying Refinement Types

Simplifying Refinement Types on GitHub

A deterministic syntax-directed algorithm to synthesize simple types that guarantee contraints from a refinement type, including common background theories and an OCaml implementation.

FLOR: Fast Low-Overhead Recovery

FLOR: Fast Low-Overhead Recovery

FLOR: Fast Low-Overhead Recovery on GitHubFLOR: Fast Low-Overhead Recovery on ACM DL

A hindsight logging toolkit for model training.

Helena

Helena

Helena on GitHubHelena on ACM DLHelena on Youtube

Programming-by-demonstration tool for automating repetitive interactions with webpages. Designed for non-programmers from the social sciences.

How Statically-Typed Functional Programmers Write Code

How Statically-Typed Functional Programmers Write Code

How Statically-Typed Functional Programmers Write Code on ACM DLHow Statically-Typed Functional Programmers Write Code on Youtube

A grounded theory (and experimental validation) of how statically-typed functional programmers write code, covering domain modeling, type construction, focusing techniques, exploratory strategies, mental models, and expressions of intent.

Understanding Version Control as Material Interaction with Quickpose

Understanding Version Control as Material Interaction with Quickpose

Understanding Version Control as Material Interaction with Quickpose on GitHubUnderstanding Version Control as Material Interaction with Quickpose on ACM DLUnderstanding Version Control as Material Interaction with Quickpose on Youtube

A version control tool for creative programmers. We used this tool to study how people use different versions of their programs in their process—navigating between, annotating and arranging, and backtracking to previous versions of their programs.