CV
My CV is available as a PDF, or as summarized below.
Education
- BA in Computer Science, Williams College, 2001
- MPhil in History and Philosophy of Science and Medicine, University of Cambridge, 2008
(Note: all work for the MPhil was completed in 2003, but I did not formally receive my degree until a ceremony in 2008.) - PhD in Computer and Information Science, University of Pennsylvania, 2009
Academic Positions
- 2022–2023 (Interim), 2024–present, Associate Dean for Research, Cornell University
- 2021–present, Professor, Cornell University
- 2016–2021, Associate Professor, Cornell University
- 2010–2016, Assistant Professor, Cornell University
- 2009–2010, Postdoctoral Researcher, Princeton University
Visiting Positions
- 2023–2024, Visiting Professor, École Polytechnique Fédérale de Lausanne
- 2016–2017, Visiting Assistant Professor, Stanford University
Industry Positions
- 2023–present, Visiting Faculty, Jane Street
- 2019–2023, Platform Architect, Intel
- 2016–2019, Principal Research Engineer, Barefoot Networks
Awards & Fellowships
- 2023 ACM SIGPLAN Robin Milner Award
- 2018 ACM SIGCOMM Rising Star Award
- 2013 National Science Foundation CAREER Award
- 2012 Alfred P. Sloan Fellowship
- 2004 National Science Foundation Graduate Research Fellowship
- 2001 Herschel Smith Fellowship
Paper Awards
- 2023 Distinguished Paper Award, ACM SIGPLAN OOPSLA
- 2021 Most Influential Paper, ACM SIGPLAN ICFP
- 2020 Best Paper Award, ACM SIGCOMM CoNEXT
- 2020 Distinguished Paper Award, ACM SIGPLAN POPL
- 2019 Best Student Paper Award, ACM SIGCOMM
- 2018 Best Paper Award, USENIX NSDI
- 2016 ACM SIGPLAN Research Highlight
- 2015 Most Influential Paper, ACM SIGPLAN POPL
- 2013 Community Award, USENIX NSDI
University Awards
- 2021 Research Excellence Award, Bowers College of Computing and Information Science, Cornell University
- 2018 James and Mary Tien Teaching Award, College of Engineering, Cornell University
- 2016 Research Excellence Award, College of Engineering, Cornell University
- 2013 Michael Tien ‘72 Teaching Award, College of Engineering, Cornell University
Publications
- Network Design Considerations for Trading Systems. In HotNets 2024.
- Computing Precise Control Interface Specifications. In PACMPL (OOPSLA 2) 2024.
- KATch: A Fast Symbolic Verifier for NetKAT. In PACMPL (PLDI) 2024.
- Automata Learning with an Incomplete Teacher. In ECOOP 2023.
- Formal Abstractions for Packet Scheduling. In OOPSLA 2023.
- P4Testgen: An Extensible Test Oracle For P4-16. In SIGCOMM 2023.
- Hydra: Effective Runtime Network Verification. In SIGCOMM 2023.
- P4Cub: A Little Language for Big Routers. In CPP 2023.
- Causal Network Telemetry. In EuroP4 2022.
- A Programming Language for Future Interests. In YJoLT 2022.
- Leapfrog: Certified Equivalence for Protocol Parsers. In PLDI 2022.
- Dependently-Typed Data Plane Programming. In POPL 2022.
- Avenir: Managing Data Plane Diversity with Control Plane Synthesis. In USENIX NSDI 2021.
- Petr4: Formal Foundations for P4 Data Planes. In PACM (POPL) 2021.
- Using Deep Programmability to Put Network Owners in Control. In SIGCOMM CCR 2020.
- Forwarding and Routing with Packet Subscriptions. In CoNEXT 2020.
- Composing Dataplane Programs with μP4. In SIGCOMM 2020.
- Guarded Kleene Algebra with Tests: Verification of Uninterpreted Programs in Nearly Linear Time. In PACMPL (POPL) 2020.
- Proof Carrying Network Code. In CCS 2019.
- Ancile: Enhancing Privacy for Ubiquitous Computing with Use-Based Privacy. In WPES 2019.
- How to Avoid Making a Billion-Dollar Mistake: Type-Safe Data Plane Programming with SafeP4. In ECOOP 2019.
- TxForest: A DSL for Concurrent Data Stores. In APLAS 2019.
- PicNIC: Predictable Virtualized NIC. In SIGCOMM 2019.
- Scalable Verification of Probabilistic Networks. In PLDI 2019.
- Efficient, Consistent Distributed Computation with Predictive Treaties. In EuroSys 2019.
- Packet Subscriptions for Programmable ASICs. In HotNets 2018.
- p4v: Practical Verification for Programmable Data Planes. In SIGCOMM 2018.
- Life in the Fast Lane: A Line-Rate Linear Road. In SOSR 2018.
- YATES: Rapid Prototyping for Traffic Engineering Systems. In SOSR 2018.
- Semi-Oblivious Traffic Engineering: The Road Not Taken. In NSDI 2018.
- NetChain: Scale-Free Sub-RTT Coordination. In NSDI 2018.
- NetCache: Balancing Key-Value Stores with Fast In-Network Caching. In SOSP 2017.
- Life on the Edge: Unraveling Policies into Configurations. In ANCS 2017.
- P4FPGA: A Rapid Prototyping Framework for P4. In SOSR 2017.
- Cantor Meets Scott: Semantic Foundations for Probabilistic Networks. In POPL 2017.
- Incremental Forest: A DSL for Efficiently Managing Filestores. In ACM SIGPLAN Conference on Object-Oriented Programming Languages, Systems, and Applications (OOPSLA), Amsterdam, Netherlands 2016.
- Optimizing Horn Solvers for Network Repair. In FMCAD 2016.
- Consistent Network Updates in Polynomial Time. In DISC 2016.
- Event-Driven Network Programming. In PLDI 2016.
- Safe and Flexible Controller Upgrades for SDNs. In SOSR 2016.
- Felix: Implementing Traffic Measurement on End Hosts Using Program Analysis. In SOSR 2016.
- Probabilistic NetKAT. In ESOP 2016.
- Formal Foundations for Networking (Dagstuhl Seminar 15071). In Dagstuhl Reports 2015.
- A Fast Compiler for NetKAT. In ICFP 2015.
- The Homeostasis Protocol: Avoiding Transaction Coordination Through Program Analysis. In SIGMOD 2015.
- Efficient Synthesis of Network Updates. In PLDI 2015.
- A Coalgebraic Decision Procedure for NetKAT. In POPL 2015.
- Merlin: A Language for Provisioning Network Resources. In CoNEXT 2014.
- Abstractions for Software-Defined Networks. In CACM 2014.
- NetKAT: Semantic Foundations for Networks. In POPL 2014.
- Managing the Network with Merlin. In HotNets 2013.
- Toward Synthesis of Network Updates. In SYNT Workshop 2013.
- HotSwap: Correct and Efficient Controller Upgrades for Software-Defined Networks. In HotSDN 2013.
- FatTire: Declarative Fault Tolerance for Software-Defined Networks. In HotSDN 2013.
- Machine-Verified Network Controllers. In PLDI 2013.
- Composing Software Defined Networks. In NSDI 2013.
- Languages for software-defined networks. In IEEE Communications Magazine 2013.
- Abstractions for Network Update. In SIGCOMM 2012.
- Splendid Isolation: A Slice Abstraction for Software-Defined Networks. In HotSDN 2012.
- Three Complementary Approaches to Bidirectional Programming. In Spring School on Generic and Indexed Programming (SSGIP) 2012.
- A Compiler and Run-time System for Network Programs. In POPL 2012.
- Specifying and Verifying the Correctness of Dynamic Software Updates. In VSTTE 2012.
- Language Abstractions for Software-Defined Networks. In LADA Workshop 2012.
- A Pairwise Abstraction for Round-Based Protocols. In LADA Workshop 2012.
- Consistent Updates for Software-Defined Networks: Change You Can Believe In!. In HotNets 2011.
- Frenetic: A Network Programming Language. In ICFP 2011.
- Forest: A Language and Toolkit for Programming With Filestores. In ICFP 2011.
- Frenetic: A High-Level Langauge for OpenFlow Networks. In PRESTO Workshop 2010.
- Bidirectional Programming Languages. In PhD Dissertation, University of Pennsylvania 2009.
- Matching Lenses: Alignment and View Update. In ICFP 2010.
- Provenance: A Future History. In Onward! 2009.
- Bidirectional Transformations: A Cross-Discipline Perspective. GRACE Meeting notes, state of the art, and outlook. In ICMT 2009.
- Updatable Security Views. In CSF 2009.
- Provenance and Data Synchronization. In IEEE Data Engineering Bulletin 2007.
- Annotated XML: Queries and Provenance. In PODS 2008.
- Boomerang: Resourceful Lenses for String Data. In POPL 2008.
- Quotient Lenses. In ICFP 2008.
- A Generic Programming Toolkit for PADS/ML: First-Class Upgrades for Third-Party Developers. In PADL 2008.
- An Algebraic Approach to XQuery View Maintenance. In PLAN-X 2008.
- A Logic Your Typechecker Can Count On: Unordered Tree Types in Practice. In PLAN-X 2007.
- Actions Louder Than Words? MSO-Definable Transductions. In Written Preliminary Exam II, UPenn CIS 2006.
- A Theory of Featherweight Java in Isabelle/HOL. In Archive of Formal Proofs 2006.
- Harmony Programmer's Manual. In 2006.
- Boomerang Programmer's Manual. In 2008.
- Harmony: A Generic Synchronization Framework for Heterogeneous, Replicated Data. In 2005.
- Exploiting Schemas in Data Synchronization. In Journal of Computer and System Sciences 2007.
- Exploiting Schemas in Data Synchronization. In 2005.
- Contexts, Boxes, and Names, Oh My!. In 2003.
- Mechanized Metatheory for the Masses: The POPLmark Challenge. In TPHOLS 2005.
- Combinators for Bidirectional Tree Transformations: A Linguistic Approach to the View Update Problem. In TOPLAS 2007.
- Combinators for Bidirectional Tree Transformations: A Linguistic Approach to the View Update Problem. In POPL 2005.
- LOOJ: Weaving LOOM into Java. In ECOOP 2004.
- Indexicals and Belief Reports. In MPhil Thesis, Cambridge History and Philosophy of Science and Medicine 2003.
- Model Checking for a Functional Hardware Description Language. In Tripos Dissertation, Cambridge Computer Laboratory 2002.
- Rupiah: Towards an Expressive Static Type System for Java. In Senior Honors Thesis, Williams Computer Science 2001.