This site is a mirror of my old course website for CS 3710. You can find code for this site and the assignments on GitHub.

This site contains the class materials for the second section of UVA’s CS 3710: Introduction to Cybersecurity.

You can find the syllabus here.

About this class

Course description

This course introduces topics in offensive and defensive cybersecurity. The first half of the course will cover the attacker’s perspective, loosely following the framework of the Cyber Kill Chain. We will discuss the different stages of the offensive operational lifecycle, various vulnerabilities and methods for exploiting them, and malware development. In the second half of the course we will take lessons learned from the attacker’s point of view and turn them towards defensive security. Topics that we’ll cover include cryptography engineering, networking, system administration, and monitoring.

This course is intended to help software engineers learn a security mindset, and prepare security engineers by giving them the tools they need to tackle real-world cybersecurity problems.


CS 2150 (or CS 3130 and CS 3140) with a grade of C- or better. Programming assignments will be written in Python; a basic familiarity with Python will be helpful but is not required.


You can find a list of all of the lecture slides here.

Homework assignments

The following table contains the list of homework assignments for the semester. In addition to these assignments, you will be expected to give one Lightning Talk at some point during the semester; the signup sheet for talk dates will go out at the start of the semester.

PA = "Programming Assignment"

Due date Topic
Lab #1 Fri Sep 2 @ 11:59PM Linux basics
Lab #2 Sat Sep 10 @ 11:59PM Basic exploitation and reconnaissance
Lab #3 Fri Sep 23 @ 11:59PM Remote code execution
PA #1 Sun Oct 2 @ 11:59PM Fuzzing: xfuzz
Midterm Sat Oct 8 @ 11:59PM
Lab #4 Mon Oct 17 @ 11:59PM Password cracking
PA #2 Sat Oct 22 @ 11:59PM Cryptography engineering
Lab #5 Sat Oct 29 @ 11:59PM Firewalls and proxies
Lab #6 Sun Nov 13 @ 11:59PM Sandboxing
Lab #7 Fri Dec 2 @ 11:59PM Antivirus with YARA
Final Thu Dec 15 @ 12:00PM

Labs will typically be released one week before their due date. Programming assignments are expected to take a little more time, and are generally scheduled to be released ~2 weeks before their due date.


The course is graded out of 100 points, broken down as follows:

Lightning talks

Lightning talks are evaluated on your ability to give a clear summary of the topic that you select in the allotted time. Part of the purpose of a lightning talk is to explain a topic to a large and diverse audience quickly and clearly; keep that in mind while you’re preparing yours!

The rough grading guidelines for lightning talks are as follows:

You are also expected to include a works cited at the end of your presentation that includes the references you used to help build your talk.

Late policy

All assignments, excluding Lightning Talks, may be submitted late up to three days after the due date without penalty. For example, an assignment due on Friday, Sep. 2nd may be submitted until 11:59 PM on Monday, Sep. 5th. Assignments submitted after the late deadline will not be accepted.

Lightning Talks must be submitted no later than two days before the talk date that you sign up for. If you sign up to present on Friday, Sep. 9th, your talk must be submitted by 11:59 PM on Wednesday, Sep. 7th.