Yihong Zhang (张轶泓)BS/MS student at Paul G. Allen School of Computer Science & Engineering
I’m a BS/MS studying Computer Science at UW Seattle. I'm broadly interested in the theories and applications of programming languages.Coursework | Blog | GitHub
- Faster and Worst-Case Optimal E-matching via Reduction to Conjunctive Queries
PLDI 2021 Student Research Competition
- GeCo: Quality Counterfactual Explanations in Real Time
Maximilian Schleich, Zixuan Geng, Yihong Zhang, Dan Suciu
To appear at VLDB 2021
Graduate course projects
- A Staged Datalog Compiler using Lightweight Modular Staging
CSE 544 Principles of DBMS
In this project, I build a staged Datalog compiler using Lightweight Modular Staging (LMS). Experiments show that it achieves up to 10x speedup compared to Souffle Datalog tool.
- Combining Statistical Top-down Deductions and Bottom-up Enumerations for Programming by Example
CSE 573 Artificial Intelligence
In this project, I add support for enumerative search to MaxFlash for PBE solving. The enumerated programs are used to directly solve the synthesis problem and guide the witness functions during probabilistic deductions. This is an attempt to unify enumerative search, deductive search, and stochastic search into a framework for program synthesis. Experiments on the SyGuS benchmarks shows mixed (aka negative) results.
- Cornelius: Killing equivalent and redundant mutants with E-graph
CSE 503: Software Engineering
with Ben Kushigian, Ishan Chatterjee, and Gabrielle Strandquist. We propose to utilize E-graph to eliminate equivalent and redundant mutants for mutation testing. This addresses the phase-ordering problem faced by Trivial Compiler Equivalence (TCE), a known technique for eliminating equivalent mutants. Experiments on a pure Java subset show that it discovers much more equivalent and redundant mutants than TCE in less time.
- Sager: A Demonic Graph Synthesizer for Worst-Case Performance
CSE 507 Computer-Aided Reasoning for Software
with Mike He. We propose to use symbolic evaluations to synthesize input instances that determine the worst-case complexity of a given algorithm. We build a prototype implementation with Rosette and show that it makes Shortest-Path Faster Algorithm (SPFA) and its several variants asymptotically worse.
Programming for fun
- Hatafun: Embedding the type system of Datafun (ICFP 2016) in Haskell.
- 2TBF: A proof-of-concept compiler from (our favorite) Pascal to an extension of brainfuck lang with two tapes.
During my undergrad, I TAed 3 classes: CSE 341, an introductory PL class for in-major undergrads; CSE 374, an intermediate programming class for non-major undergrads; and CSE 505, an PL class for Professional Masters and PhDs. TAship is fun.