This course provides an introduction to the principles and practice of computer and network security. The three key topics of this course are cryptography, privacy, and network security. Subtopics include ciphers, key exchange, security services (integrity, availability, confidentiality, etc.), network and web based security attacks, anonymous communications, vulnerabilities, and countermeasures. Students will complete several lab assignments. Grades will be determined by class participation, lab work, homework, quizzes, and exams.
For this course I substantially redesigned the assignment sequence around one goal: hands-on attacks and defenses that are engaging for students yet fully automatable on the grading side. Some assignments for this class include building an encrypted communication protocol for AI agents, cracking passwords efficiently (with a competitive component!), building a DNS resolver that implements DNS censorship (to understand how censorship works in the real world), and performing ML backdoor attacks. Each assignment ships with a Gradescope autograder I wrote to evaluate submissions deterministically, alongside starter scaffolding and reference solutions.
I also served as a substitute lecturer for Eugene, giving a lecture on DNS and its security vulnerabilities, as well as on how AI agents are changing vulnerability research, including a live demo of using Claude to find vulnerabilities.