-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsyllabus.html
More file actions
129 lines (129 loc) · 6.29 KB
/
Copy pathsyllabus.html
File metadata and controls
129 lines (129 loc) · 6.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>CS 4630: Defense Against the Dark Arts (DADA)</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="../markdown.css" />
</head>
<body>
<main>
<h1 id="cs-4630-defense-against-the-dark-arts-dada">CS 4630: Defense
Against the Dark Arts (DADA)</h1>
<p><a href="index.html">Go up to the main UVa page</a> (<a
href="index.md">md</a>)</p>
<h3 id="fall-2017">Fall 2017</h3>
<h3 id="mwf-1000-1050-rice-130">M/W/F 10:00-10:50, Rice 130</h3>
<p><strong>Instructor:</strong> Aaron Bloomfield (aaron@virginia.edu).
Office is Rice Hall, room 403. Office hours are M/W 1:00-2:30 and other
times by appointment</p>
<p><strong>Pre-requisites:</strong> This course requires completion of
CS 2150 with a grade of C- or above.</p>
<p><strong>Reading:</strong> Due to the rapidly changing nature of this
topic, there is no assigned textbook – the best textbook on the topic is
already 5-10 years out of date. Readings will consist of handouts,
online materials, and articles (both media and scholarly). Much of the
background for this course depends on completing the readings. Thus,
occasional pop quizzes will happen to ensure that everybody is doing the
reading (and to ensure that people are showing up to class!).</p>
<p><strong>Grading:</strong> There will be one midterm (15% of the
grade, on Wednesday, October 11th) and a final exam (25% of the grade,
on Friday, December 15th at 9 a.m.). The homework assignments will
constitute 50% of your grade. Attendance in class is noted.
Participation will be the remaining 10%; participation will consist of
in-class pop-quizzes, attendance, etc. Excessive unexcused absences from
class is grounds for receiving a lower (or even failing!) grade. I
reserve the right to adjust the percentages based on the number of
assignments and quizzes, and other factors.</p>
<p><strong>Assignments:</strong> There are expected to be one assignment
every 1.5 weeks, on average. Some will be shorter and easier, some will
be longer and harder. There will be both programming assignments as well
as occasional pencil and paper assignments.</p>
<p><strong>Course rules:</strong> You are fully responsible for all
material presented in class. Exams and due dates are scheduled in
advance. A grade of zero will be recorded for missed exams and late
assignments unless prior arrangements are made. Assignments turned in
after the due date are penalized 25% per day (or fraction thereof) late;
this means a maximum of 3 days (i.e. 72 hours) late. You are free to
develop assignments on any platform/OS you wish. However, you are
responsible for porting your code to the system the class is using and
ensuring that it runs correctly for us when we grade your assignment.
Our reference system will specified for each assignment, but will
generally be Ubuntu Linux. Some assignments will be graded by automated
unit testing.</p>
<p><strong>Cheating:</strong> Students are encouraged to discuss
programs and assignments in general. However, helping others find bugs
in existing programs, using another person’s code, or writing code for
someone else is cheating and a violation of the University’s Honor
System. Basically, you should not be looking at another person’s code
for ANY reason (obviously you can after BOTH have submitted the
assignment, or if there is a group project). This includes consulting
solutions to assignments from previous years or tests from previous
years. Any honor violation or cheating will be referred to the honor
committee, and will result in an immediate failure for the course,
regardless of the outcome of the honor trial or your other grades. No
exceptions! I am very strict on this, and one have successfully raised
honor charges against students in the past due to violations of this
policy - and I’ve blocked people from graduation because of honor
offenses.</p>
<p><strong>Course Objectives:</strong></p>
<ul>
<li>Understand the nature and types of viruses (and other malware), and
how they are threats to computer systems.</li>
<li>Learn the techniques used to prevent, detect, repair, and defend
against viruses and worms.</li>
<li>Learn to use program binary examination tools to detect malicious
code.</li>
<li>Understand the ethical issues surrounding computer security
violations.</li>
</ul>
<p><strong>Syllabus:</strong> The following is the list of topics we
expect to cover. The order we will cover them in depends largely on the
homeworks – while we generally expect to cover the material in the order
provided, the primary objective is to have the topic covered around the
time the homework is assigned.</p>
<ul>
<li>Course introduction, ethics guidelines and pledge, threat
models</li>
<li>Categories of threats, terminology, overview of Intel x86
architecture</li>
<li>Overview of Intel x86 architecture, binary disassembly tools; Boot
viruses</li>
<li>Viruses: Interrupt hooking, memory-resident viruses, executable file
infections</li>
<li>Viruses: Detecting viruses using patterns; regular expressions and
lex</li>
<li>Obfuscation; defeating obfuscation</li>
<li>Intro to Phoenix & binary analysis tools</li>
<li>Anti-anti-virus schemes: tunneling, armor, retroviruses</li>
<li>Anti-virus analysis; SSA form</li>
<li>Encrypted and oligomorphic viruses</li>
<li>Polymorphic and metamorphic viruses</li>
<li>Software dynamic translation: security applications</li>
<li>Vulnerabilities, exploits, buffer overflows; secure coding; static
analyzers</li>
<li>Root kits</li>
<li>Encryption and RSA</li>
<li>Wrap-up</li>
</ul>
</main>
</body>
</html>