| Course Code: CS5187 Course Name: Software Analysis Prerequisites: CS1214 or equivalent Syllabus: Software Analysis: static, dynamic, and hybrid analysis; program invariants; soundness, completeness, undecidability; precision, recall, F-measure. Program Representation: abstract syntax trees, control flow graphs, intermediate representations, LLVM IR. Software Specifications: safety and liveness properties; pre-conditions, post-conditions, loop invariants, class invariants;code coverage, mutation analysis. Random Testing: fuzz testing, grammar-based fuzzing, coverage-guided fuzzing, concurrency testing. Dataflow Analysis: lattices, fixed-point computation, worklist algorithms; reaching definitions, available expressions, very busy expressions, live variables; interval analysis, widening. Pointer and Alias Analysis: may-alias and must-alias analysis, points-to graphs; Andersen's and Steensgaard's algorithms; flow-sensitivity, context-sensitivity, heap abstraction; control flow integrity. Constraint-Based Analysis: Datalog, intra-procedural and inter-procedural analysis, context sensitivity; SAT and SMT solvers. Automated Test Generation: specification-guided generation, random and systematic approaches. Type Systems: type rules, type checking, type soundness; type inference; flow-insensitive, flow-sensitive, path-sensitive analyses. Symbolic Execution: symbolic values, path conditions, computation trees, constraint solving; dynamic symbolic execution, comparison with random testing; applications in vulnerability detection. LLM-Assisted Software Analysis: LLM-guided test generation, LLM-based vulnerability discovery Texts: 1. Flemming Nielson, Hanne R. Nielson & Chris Hankin (1999). Principles of Program Analysis. Springer. ISBN: 3540654100 2. Flemming Nielson & Hanne Riis Nielson (2020). Program Analysis: An Appetizer. - https://arxiv.org/abs/2012.10086 3. Andreas Zeller, Rahul Gopinath & Marcel B{\ (2024). The Fuzzing Book: Tools and Techniques for Generating Software Tests. CISPA Helmholtz Center for Information Security. - >https://www.fuzzingbook.org/ 4. Uday P. Khedker, Amitabha Sanyal & Bageshri Karkare (2009). Data Flow Analysis: Theory and Practice 5. Anders Moller & Michael I. Schwartzbach (2018). Static Program Analysis. - https://cs.au.dk/~amoeller/spa/ |