Lectures: Mon and Wed 9:30am-10:50pm, Tech LG76.
Cybercrime has exploded over the last
decade. In this course, we will explore programming
language and program analysis techniques to improve the
security of software systems. Topics include classical
static, dynamics and hybrid analysis techniques, and their
new applications on the emerging software systems, such as
smartphones, Web, and embedded systems.
This course is intended for both CS and CE undergraduates and graduate students. During the course, we will read and discuss research papers, and identify a list of open research problems, from which the students can choose their class projects. There will be no exams. Students are encouraged to take 399/499 courses with me, and use the same project for 399/499 and this course. This course is counted for the project requirement, and the depth areas of system and securitys as well as the breath area of systems for CS major student.
No exams for this class.
There is no required textbook. All reading will be from papers. Whenever possible, handouts and papers will be placed online on the web page. A schedule of assigned readings is available online.
To ensure lively discussions, you will be required to write a very brief summary of each paper you read, to be electronically handed in by at least 24 hours before the class time, via emailing to firstname.lastname@example.org. Your summary should include at least:
Each presentation should include at least the following from the paper:
You must send the slides to email@example.com for review at least 48 hours before your presentation. There are some guidelines which you will find useful.
Projects (done in groups of size 2+) are a critical component of this course. Your goal is to design, build and evaluate interesting systems that address issues, solve problems and exploit techniques from classroom discussions and readings.
Projects must be written up in a term paper and teams will present their results at the end of the course in a mini-conference and write up a report. The list of potential ideas for projects will be posted soon. Feel free to use one, propose something completely different, or refine one of these into your own idea.
Project Deliverables and Deadlines (all due at 11:59pm of the due date)
Proposal -- April 12: 3-4 pages describing the purpose of the project, work to be done and potential load distribution, expected outcome/results, etc. Make sure to describe the context and related work for the proposed project.
Weekly Meeting and Progress Report -- April 15 - May 24 Each team will schedule a weekly meeting (30 minutes) with the instructors. Send us the updated report and highlight the new updated part (except the May 5 week). For each week, we expect updates of 1-2 pages on the project status, initial results, and problems encountered, etc. The report is due 24 hours ahead of the meeting.
Midterm presentation -- May 3: Presentation of your project in progress to the class (20 minutes each group).
Project Presentation -- May 31: The final project presentation should have the following content: 1) briefly state the goal of the project; 2) present the algorithms and results; 3) any remaining work to be finished by the final project report; 4) work division among the group. The presentation is expected to be 30 minute each, including Q&A.
Final Report -- June 12: The final report is a workshop-level paper describing your work, evaluation, related research, potential avenues to explore, etc. You should incorporate the comments received during the presentation. At the end of report, there should be an appendix of README which describes 1) where the code is; and 2) how to run the code (including the library and environment needed).