📖 Overview
Andrew W. Appel is a Professor of Computer Science at Princeton University and a leading researcher in programming languages, compilers, and computer security. He has made significant contributions to the field of verified software, particularly through his work on compiler verification and proof-carrying code.
Appel is known for developing the ML programming language implementation and authoring influential textbooks including "Modern Compiler Implementation" in three versions (ML, Java, and C). His research on proof-carrying code helped establish new approaches for ensuring the safety of mobile code and operating system extensions.
Throughout his career, Appel has been involved in computer security and voting systems research, serving as an expert witness in cases involving electronic voting machines. He has also made contributions to garbage collection algorithms and the mechanized verification of mathematical proofs.
His work bridges theoretical computer science with practical applications, particularly in areas where formal verification meets real-world systems. Appel is a fellow of the ACM and has served as Editor in Chief of ACM Transactions on Programming Languages and Systems.
👀 Reviews
Readers consistently note Appel's textbooks as clear and comprehensive references for compiler design. The "Modern Compiler Implementation" series receives frequent citations in academic reviews.
Liked:
- Clear explanations of complex concepts
- Practical implementation examples
- Thorough coverage of compiler theory fundamentals
- Strong focus on real-world applications
- Well-structured progression of topics
Disliked:
- Some readers find the mathematics too advanced
- Code examples can be dense for beginners
- High price point for textbooks
- Limited coverage of more recent compiler techniques
- Some exercises lack solutions
On Goodreads, "Modern Compiler Implementation in ML" has a 4.11/5 rating from 74 reviews. The Java version rates 4.03/5 from 68 reviews. Amazon reviews average 4.2/5 across editions.
One reader notes: "Clear presentation of theory backed by working code." Another states: "Mathematical depth makes this challenging for self-study."
The technical content receives consistent praise, though accessibility for newcomers remains a common critique.
📚 Books by Andrew W. Appel
Modern Compiler Implementation in ML
A comprehensive textbook covering compiler construction techniques, using ML as the implementation language.
Modern Compiler Implementation in Java A parallel version of the ML compiler textbook, using Java as the implementation language.
Modern Compiler Implementation in C A parallel version of the ML compiler textbook, using C as the implementation language.
Compiling with Continuations A technical examination of continuation-passing style and its role in compiler optimization.
Policy Machinery: New Tools for Automated Analysis of Laws An exploration of formal methods for analyzing and verifying legal regulations and policies.
Verification of a Cryptographic Primitive: SHA-256 A formal verification of the SHA-256 cryptographic hash function implementation.
How to Fix America's Voting System An analysis of voting technology security and recommendations for electoral system improvements.
Modern Compiler Implementation in Java A parallel version of the ML compiler textbook, using Java as the implementation language.
Modern Compiler Implementation in C A parallel version of the ML compiler textbook, using C as the implementation language.
Compiling with Continuations A technical examination of continuation-passing style and its role in compiler optimization.
Policy Machinery: New Tools for Automated Analysis of Laws An exploration of formal methods for analyzing and verifying legal regulations and policies.
Verification of a Cryptographic Primitive: SHA-256 A formal verification of the SHA-256 cryptographic hash function implementation.
How to Fix America's Voting System An analysis of voting technology security and recommendations for electoral system improvements.
👥 Similar authors
Benjamin Pierce writes textbooks on programming languages and type systems, focusing on formal methods and verification. His work "Types and Programming Languages" covers similar theoretical foundations as Appel's compiler texts.
Robert Harper specializes in programming language theory and functional programming implementation. His books on practical foundations for programming languages align with Appel's focus on rigorous computer science fundamentals.
Alfred Aho co-authored "Compilers: Principles, Techniques and Tools," which examines compiler construction from theoretical and practical perspectives. His work complements Appel's compiler series with additional focus on algorithms and optimization techniques.
Chris Hankin writes about program analysis and abstract interpretation in computing. His publications on static analysis and programming language theory share common ground with Appel's work on compilation and verification.
John Mitchell produces texts on programming language foundations and computer security. His books cover type systems and semantic foundations that parallel Appel's treatment of language implementation and verification.
Robert Harper specializes in programming language theory and functional programming implementation. His books on practical foundations for programming languages align with Appel's focus on rigorous computer science fundamentals.
Alfred Aho co-authored "Compilers: Principles, Techniques and Tools," which examines compiler construction from theoretical and practical perspectives. His work complements Appel's compiler series with additional focus on algorithms and optimization techniques.
Chris Hankin writes about program analysis and abstract interpretation in computing. His publications on static analysis and programming language theory share common ground with Appel's work on compilation and verification.
John Mitchell produces texts on programming language foundations and computer security. His books cover type systems and semantic foundations that parallel Appel's treatment of language implementation and verification.