Program Analysis Bootcamp
A hands-on bootcamp for learning program analysis techniques in OCaml: ASTs, control flow graphs, dataflow analysis, abstract interpretation, and security analysis.
How This Bootcamp Works
Read & Learn Here
Browse slides, instructions, starter code, and exercise hints in this web app.
Code Locally
Clone the GitHub repo and edit starter files in VS Code, Vim, or your preferred editor.
Test with Dune
Run dune runtest in your terminal to check your solutions against the test suite.
Module Dependency Map
Modules build on each other. M0 teaches OCaml, M1 sets the conceptual foundation, M2-M4 develop independent analysis skills, M5 combines them for security, and M6 integrates everything into a complete tool.
Course Modules
OCaml Warm-up
Get up to speed with OCaml fundamentals: syntax, types, recursion, collections, modules, and a calculator parser.
Foundations of Program Analysis
Learn what program analysis is, compare static vs dynamic approaches, and explore soundness, completeness, and decidability.
Code Representation & ASTs
Explore how compilers represent code as Abstract Syntax Trees. Build visualizers, traversals, symbol tables, and transformations.
Static Analysis Fundamentals
Build control flow graphs, implement the dataflow analysis framework, and apply reaching definitions and live variable analyses.
Abstract Interpretation
Learn abstract interpretation theory: lattices, Galois connections, and widening. Implement sign, constant propagation, and interval analyses.
Security Analysis
Apply program analysis to security: taint analysis, information flow tracking, and automatic vulnerability detection.
Tools Integration
Capstone module: combine all analyses into a real tool. Build a multi-pass analyzer with configurable pipelines and reporting.