The course covers the principles of programming language-based techniques for computer security.
The goal is;
1) Understanding such applicaiton-level attacks as race conditions, buffer overruns, covert channels, and code injection.
2) Mastering the principles behind such language-based protection techniques as static analysis, program transformation, and reference monitoring.
The dual perspective of attack vs. protection is threaded through the lectures, laboratory assignments, and projects.