Yihong Zhang (张轶泓)BS/MS student at Paul G. Allen School of Computer Science & Engineering
I am a BS/MS studying Computer Science at UW Seattle. I am broadly interested in the theories and applications of programming languages. I will be applying for PhD positions starting at Fall 2022.Curriculum Vitae | Coursework | GitHub
- Relational E-Matching
Yihong Zhang, Yisu Remy Wang, Max Willsey, Zachary Tatlock
POPL 2022 (conditionally accepted)
- Faster and Worst-Case Optimal E-Matching via Reduction to Conjunctive Queries
PLDI 2021 Student Research Competition
1st place in undergraduate category
[abstract] [poster] [slides]
- GeCo: Quality Counterfactual Explanations in Real Time
Maximilian Schleich, Zixuan Geng, Yihong Zhang, Dan Suciu
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-graphs
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.
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, a PL class for Professional Masters and PhDs. TAship is fun.On CS education
What I am saying is that there are many students out there who do not know enough about CS to make an informed decision as to whether or not to pursue it. I would hate for any student to miss out on exploring CS simply because they have not been properly exposed to its potential or because they don’t have the confidence to try it. And I would hate for this deeply important field to miss out on the contributions and perspectives of so many talented and creative students.
Why Women (and Everyone Else) Should Code, by Anna Karlin.