Skip to content

Commit

Permalink
Update 2024fa.md
Browse files Browse the repository at this point in the history
  • Loading branch information
reeselevine authored Oct 30, 2024
1 parent 8aa0c45 commit fe24cf5
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions content/lsd-seminar/2024fa.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Talks will be advertised on the [ucsc-lsd-seminar-announce](https://groups.googl
| [Oct 11](#oct-11) | Jonathan Castello | Inductive diagrams for causal reasoning |
| [Oct 18](#oct-18) | Bastian Köpcke | Descend: A Safe Imperative GPU Programming Language |
| [Oct 25](#oct-25) | Haofan Zheng | Decentagram: Highly-Available Decentralized Publish/Subscribe Systems |
| [Nov 1](#nov-1) | Justin Lubin | _TBD_ |
| [Nov 1](#nov-1) | Justin Lubin | Programming By Navigation |
| [Nov 8](#nov-8) | Bhakti Shah | _TBD_ |
| [Nov 15](#nov-15) | Federico Mora | _TBD_ |
| [Nov 22](#nov-22) | Haining Tong | _TBD_ |
Expand Down Expand Up @@ -83,11 +83,17 @@ This presentation is based on the work by Haofan Zheng, Tuan Tran, Roy Shadmon,

**Speaker:** Justin Lubin

**Title:** _TBD_
**Title:** Programming By Navigation

**Abstract:** _TBD_
**Abstract:** Most commonly, a program synthesizer works by (1) requiring a specification from the user and (2) handing back a program that satisfies the specification, if one exists. Sometimes, this program is the smallest such program. Sometimes, it’s chosen via a user-defined cost function. And, sometimes, it’s just the one that came out of the synthesizer first!

**Bio:** _TBD_
But what should we do if we want to hand control back to the user and let the user pick from among all the valid solutions—what we call the Particular Program Task? Can we solve it without just returning a stream of all valid programs? Can we solve it even if there are infinitely many programs to consider?

To do so, we introduce the Programming By Navigation paradigm, which is based on a novel program synthesis problem that roughly states: Given a work-in-progress program, return all (and only) the valid next steps. We solve the Programming By Navigation synthesis problem with a new algorithm that turns information from a type inhabitation oracle (in the style of classical logic) into a concrete program (in the style of constructive logic). By structuring our algorithm as such, we can use an off-the-shelf Datalog engine as our type inhabitation oracle and reap the wealth of research and engineering efforts that have gone into modern Datalog engines for free. In the process, classic program synthesis optimizations such as observational equivalence pruning and memoization fall out naturally from existing Datalog optimizations. Based on preliminary results, our new algorithm solves the Particular Program Task faster than baselines.

More broadly, I’ll talk about our deep, ongoing collaboration with experimental biologists that led to the design of Programming By Navigation.

**Bio:** Justin is a PhD candidate in computer science advised by Sarah E. Chasins at UC Berkeley. His main research interest is co-designing programming systems with domain experts to empower them to write the code they need with autonomy. As part of this process, he collaborates closely with the Nuñez Lab at UC Berkeley, a group of experimental biologists who blend CRISPR-based genome and epigenome editing, functional genomics, cell biology, and biochemistry to understand the regulatory principles of the human genome.

## Nov 8

Expand Down

0 comments on commit fe24cf5

Please sign in to comment.