Software is a critical target of cyber attackers. Cybercriminals spend significant effort understanding software systems, exploiting their weaknesses to achieve malicious goals.
At the same time, software is at a critical location for security. It interacts with the underlying hardware and the users/attackers. In other words, the software is at the intersection of all critical security entities, meaning it can be the ideal place to implement security measures.
This course aims to teach how to develop secure computing systems from the software security perspective. In particular, we focus on understanding attackers and their offensive techniques.
This course does not have particular prerequisites. However, this course assumes that you are familiar with the C programming language and core computer concepts (e.g., Compiler, Programming Language). If you are not familiar with those, you may have to spend extra time to learn those. The course will provide materials and guidance.
Assignments will require a Linux environment. You should anticipate setting up a virtual machine if you don't run Linux natively. Using VirtualBox and WSL version 2 are recommended.
cvm
(Username: classvm
)cvm
(username is classvm
)Emulate
, Linux
We expect to determine grades as follows:
Assignments | Percentage of Final Grade |
---|---|
2 Projects | 70% |
3 Homeworks | 20% |
Participation | 10% |
Total | 100% |
We expect all homeworks to be completed individually. You may not share code or consult assignment solutions from previous semesters or other institutions. You are encouraged, however, to discuss the assignments in general and provide advice to other students that does not amount to sharing code, pseudocode, or instructions that otherwise essentially solve the assignment. We may use automated tools to look for similarities between homework submissions that suggest excessive collaboration.
Your submissions for homeworks should not make extensive use of code found online. Incidental use (very brief utility code that is clearly unrelated to any major objective of the assignment, like looking up code for splitting a string into an array) is okay, but must be clearly cited. If you are unsure whether something would qualify as “incidental”, please consult the course staff first.
If we believe you have cheated, we may apply an arbitrarily harsh grade penalty up to and including an F in the course. This penalty is independent of (and potentially in addition to) any findings of the University Honor System.
If you need any kind of special accommodations, including but not limited to disability, learning needs, illness, or personal circumstances, please contact us as soon as you are aware of these needs. We aim to be as accommodating and fair as possible.
If you are not sure if your situation warrants special attention, ask us.