Andrew W. Appel

Eugene Higgins Professor of Computer Science
Department of Computer Science
Princeton University

Andrew Appel Bio & Contact



My students

Research Interests: program verification, computer security, programming language semantics, machine-checked proofs, compilers, and election technology.

Applicants to the PhD program interested in programming languages and formal methods should consider Professor Milano (in addition to Professors Gupta, Kincaid, or Walker); and should apply through normal channels rather than writing to us directly.

Verified Software Toolchain
VST project page
CertiCoq project page
Verified Network Toolchain
Voting machines

Selected articles on voting: (more here and here)
Securing the Vote — National Academies report
Florida is the Florida of ballot-design mistakes
Pilots of risk-limiting election audits in California and Virginia
BMDs are not meaningfully auditable
Did Sean Hannity misquote me?
Georgia’s election avoided an even worse nightmare...
New Hampshire Election Audit, part 1; and part 2
ES&S Uses Undergrad Project to Lobby NY Legislature
A PDF File Is Not Paper, So PDF Ballots Cannot Be Verified
Magical thinking about BMD contingency plans
Is Internet Voting Secure? The Science and the Policy Battles
Why the voting machines failed in Mercer County
Next Steps for Mercer County
Unrecoverable Election Screwup in Williamson County TX
Sort the mail-in ballot envelopes, or don't?
Suggested Principles for State Statutes Regarding Ballot Marking and Vote Tabulation

   Internet Voting? Really?

Technology Policy

Center for Information Technology Policy

My blog at Freedom to Tinker

Other technology policy work I've done

A bit of history

Graph Coloring and Machine Proofs in Computer Science, 1977-2017
Public lecture at the University of Illinois in honor of the 40th anniversary of the Four Color Theorem proved by Kenneth Appel and Wolfgang Haken

Previous research projects

2015-2021: The Science of Deep Specification
2013-2017: Formally Verified Cryptography
2006-now: Verified Software Toolchain
2004-2006: Enterprise Network Security Analysis
1997-2005: Foundational Proof-Carrying Code for security of untrusted code.
1986-1996: Standard ML of New Jersey, a compiler for the type-safe functional programming language ML.