Andrew Cheung (he/him)


I’m a master’s student at the University of Washington studying Programming Languages at the Paul G. Allen School of Computer Science & Engineering. I’m a member of the Programming Languages and Software Engineering (PLSE) group, where I work in the intersection of PL and Computer Architecture. Under the mentorship of Zachary Tatlock and Gus Smith, we’re making tools to make it easier for hardware designers to compile their designs to FPGAs.

Next year, I’ll be starting my PhD. I don’t know where yet, but I’m excited to see where I end up!


I work on tools that make it easier for hardware designers to create correct, efficient designs.

I’ve spent the past two years collaborating with a team of researchers in PLSE on Lakeroad, a hardware compilation tool that uses program synthesis to generate hardware designs. We presented the basis for this work (link) at PLARCH 2023, and our main paper (link) will appear at ASPLOS 2024.

As part of my work on Lakeroad, I created Cookie (extended abstract), a tool which rigorously evaluates FPGA compilation tools based on their ability to efficiently map designs to DSPs. I presented this work at ICFP 2023 (talk | poster), and was awarded first place in the graduate division of the Student Research Competition.

Currently, for my master’s thesis, I’m working on Gator (link), which improves Lakeroad’s ability to give correct-by-construction guarantees about the hardware it generates. I gave a talk on this work to my group (slides), and am excited to see where it goes!

Before Lakeroad, I worked on 3LA, a project in collaboration with researchers at UW, Princeton, and Harvard to make it easier for developers to perform end-to-end evaluations of their accelerators. Our work was accepted to TODAES 2023 (link).


I love teaching, and have been doing it since my first year of undergrad.

I’m the TA Coordinator for CSE 12x, which is UW’s introductory programming sequence. In general, this involves leading over 100 TAs and interviewing, hiring, and training our quarterly cohort of new TAs. Here’s a picture of us from last year (I’m in the middle wearing the turtleneck)!

I wouldn’t be able to do this without the support of the unstoppable Chloe Fong, my co-coordinator! Recently, we were interviewed for a documentary by Northeastern University’s Center for Inclusive Computing which highlights the world-class TA program that I’m lucky to be a part of.

Before I was a TA Coordinator, I was a Lead TA for CSE 122 and CSE 123, two courses in the intro sequence. Before that, for 10 quarters I was a Lead TA for CSE 142, the first course in the old intro sequence. While there, I created Cornbear, a static analysis tool that helps TAs grade their code. Cornbear was actually my introduction to programming languages research! This project still goes on strong today, led by the fearless and brilliant Owen Boseley.

Before I ever taught in a classroom, I was an Allen School tutor for student athletes; I worked with a student athlete throughout the quarter to support them in their CS courses.


I spent the latter half of 2023 as a Formal Verification Research Intern at Intel Labs working with Jin Yang and Jeremy Casas on a project responding to DARPA’s aims to develop an accelerator for fully homomorphic encryption. There, I used industry-grade formal verification tools to verify sections of hardware designs.

In the summer of 2022, I was a Software Development Intern at Amazon, where I worked with Anton Nikitin and Yi-Wei Lu on full-stack development of software to help train employees working at Amazon’s fulfillment centers.


When I’m not at school or work, I love making things – whether that’s cooking, programming, or making music.

Perhaps unsurprisingly given my field, I love playing video games. I’m currently nurturing a long-dormant love of Starcraft II, and am sitting proudly at the top of Diamond 3. Other games I like include League of Legends (I play Annie because I can’t aim), Team Fortress 2, and any Metroid game ever.

I also like to learn languages. Outside of English, I speak Cantonese (I grew up reading/speaking it, and can still communicate at a 3rd grade level), Mandarin (really poorly lol), and Spanish. I also can read some Japanese/Korean/Russian, but generally I have no idea what I’m saying.