Learn methods to improve software quality
-reliability, security, performance
-Become a better software developer
Security Vulnerabilities
-Exploits of errors in programs
Dynamic, static, hyprid
An invariant at the end of the program
int p(int x){ return x * x; } void main(){ int z; if(getc() == 'a') z = p(6) + 6; else z = p(-7) -7; if (z != 42) disaster(); }
void main(){ z = 3; while (true){ if(x == 1) y = 7; else y = z + 4; assert (y == 7); } }