Hi! I am a 5th year MS student studying Computer Science at UC Berkeley, advised by Sarah E. Chasins.

My research focus is at the intersection of programming languages and human-computer interaction. My current work aims to improve the usability of program synthesizers through new user interfaces explaining synthesis outputs. I am also interested in applications of PL + HCI techniques to data science and computer science education!

I am part of the PLAIT Lab at UC Berkeley EECS. I have also been involved with the ACE Lab and Teaming by Design at Berkeley, researching assignment extensions in computer science courses and building software for data-driven student feedback in team-based design courses, respectively.

Current Projects

Synthesis Interfaces [EPIC Advance poster]
How can we design new interfaces for program synthesis that enable users to understand generated programs in unfamiliar languages? This builds off of the NumPy Program Synthesis project, in collaboration with Kevin Ye, Justin Lubin, and Prof. Sarah E. Chasins.

Flexible Extensions [github] [more info]
A system for requesting and granting extensions on programming assignments, aiming to reduce workloads for course staff in large computer science courses and improve student quality of life.

Teaming by Design [github] [website]
How can we improve experiences for students in courses with team-based projects? We designed a data pipeline for processing surveys of team members and created visualizations for giving students actionable, data-driven feedback.

Past Projects

SEPO [final project poster] [final project report] [github]
A symbolic execution engine for RISC-V assembly, used to output traces of CPU states and discover optimizing rewrites. Class project for CS 264 at Berkeley, in collaboration with Sora Kanosue.

NumPy Program Synthesis
A program synthesizer that generates NumPy from Python for loops, intended to allow a broader audience of programmers to write higher-performance code. Project in collaboration with Justin Lubin, Jeremy Ferguson, Kevin Ye, and Prof. Sarah E. Chasins.


* = equal contribution

Refactoring Programs via Component-Based Synthesis Using Canonicalization-Based Equivalence Checking
Justin Lubin, Jeremy Ferguson*, Kevin Ye*, Jacob Yim*, and Sarah E. Chasins
Paper to appear at PLDI 2024

Supporting Mastery Learning with Flexible Extensions [pdf]
Yuerou Tang*, Jacob Yim*, Jordan Schwartz, Madison Bohannan, Dana Benedicto, Charisse Liu, Armando Fox, Lisa Yan, and Narges Norouzi
Poster to appear at SIGCSE TS 2024

Automated Support for Flexible Extensions
Jordan Schwartz, Madison Bohannan, Jacob Yim, Yuerou Tang, Dana Benedicto, Charisse Liu, Armando Fox, Lisa Yan, and Narges Norouzi
Poster to appear at SIGCSE TS 2024

Searching for Incidental Specifications [pdf]
Jeremy Ferguson*, Kevin Ye*, Jacob Yim*, and Justin Lubin


Data 100: Principles and Techniques of Data Science
teaching assistant: Spring 2023, Fall 2022, Summer 2022
course tutor: Spring 2022, Fall 2021

Industry Experience

Amazon Web Services
Software Development Engineer Intern: Summer 2023, Summer 2022

Software Engineering Intern: Summer 2021


I teach science lessons at elementary and middle schools with Berkeley Engineers and Mentors. As part of the Curriculum committee, I write lessons for our students.

For fun, I also run Smash at Berkeley, a club organizing tournaments for the Super Smash Bros. series of games.