Welcome to Principles of Static Program Analysis
This site contains materials for the “Principles of Static Program Analysis” course taught at Faculty of Computer Science of Higher School of Economics.
For information on course administration, please refer to the official course page at the university website. Also, here is the link to the official syllabus.
Course Motivation
Static analysis is a method that allows developers to ensure code quality without running it. Modern software companies use a variety of static analysis tools and even create their solutions to cover specific requirements. The goal of the course to give students an introduction into methods of static analysis. The lectures give the necessary theoretical background. The workshops will give experience with modern static analysis tools and frameworks used to create them. The course will be useful for those who are interested to: better understand programming languages and compilers; create own domain-specific languages; efficiently use static analysis tools; create own static analysis tools.
Course Description
The course is taught in modules 1-2. The course contains 15 lectures and 15 workshops.
Course Topics
- Introduction to static analysis.
- Lexical analysis.
- Syntax analysis.
- Semantic analysis.
- Abstract syntax tree analysis.
- Internal representation.
- Control-flow analysis.
- Data-flow analysis.
- Inter-procedural analysis.
- Symbolic execution and SMT solvers.
- Deductive verification.
- Mining-based analysis.
- JVM and Java bytecode analysis.
- LLVM and Clang Static Analyzer.
- Formal semantics.
Grading System
Information on the grading system for the course is here.
Textbooks and Related Courses
The list of textbooks and related courses recommended for studying is here.
Links
Links to other related external resources are here.
Feedback
If you have any questions or suggestions related to the course content, please feel free to submit an issue or contact the course author. If you like the course, you are welcome to star it in GitHub.