This course covers advanced topics in software security. Students will be exposed to techniques that are gaining increasing attention in the software security research communities through research papers and programming assignments. Students will have opportunities to develop their scientific communication skills through writing their own project proposals and presenting their solutions.
This course includes programming assignments through which students will learn how to design and implement dynamic and static program analyzers.
We will use Github/Github Classroom to provide skeleton code and manage submissions.
Make sure you have a Github account and get the student developer pack benefits.
Moreover, student should get familiar with git
.
If you are new to git
, see this book.
All submissions will be managed using Github.
For each assignment, a unique invitation URL for Github Classroom will be posted in this page.
Once you accept the invitation, a private repository for your assignment will be created.
You can push as many commits as you want before the deadline. We will grade the final commit of your master
branch.
The late homework policy is as follows:
Students will use the OCaml programming language for the assignments. For more details of OCaml, see the following meterials:
Students will use the LLVM infrastructure and implement various tools that analyze programs written in LLVM IR code. LLVM IR code can be generated from many source languages such as C/C++/Obj-C, Swift, Rust, Scala, Haskell, etc. For more details of LLVM, see this document.
Students will use the Z3 theorem prover that automatically prove logical contraints (e.g., safety conditions) generated by your analyzer from LLVM IR.
Students who violates academic integrity will get an F.