This is the Github repository for IS511 at KAIST. For the details of the course, visit the course webpage. Announcements and QnA will be posted in the issue board.
This course includes written and programming assignments. Students will use a few tools which are described below.
We will use Github/Github Classroom to provide assignment templates 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 the issue board.
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:
- You are given 5 “grace days” (extra time without any penalty)
- Once you have run out of grace, late submissions will be discounted 30% per day
Students will use the OCaml programming language for the software security assignments. For more details of OCaml, see the following meterials:
- Functional Programming in OCaml (simple version)
- Functional Programming in OCaml (detailed version from Cornell CS3110)
- OCaml Tutorial Videos
- Why Functional Programming Matters
- Functional Programming in 40 minutes
- Commercial Users of Functional Programming
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, WebAssembly, etc. For more details of LLVM, see this document.