Spring 2022
Brown University
CS1660 delivers a balanced mix of theory and practice in computer systems security. Starting with the foundational aspects of cryptography, the course navigates through security aspects of web applications, operating systems, and networks. Students will hone their "security mindset," learning to identify vulnerabilities and understand defenses across different domains.
CS1660 (formerly called CS166) is a course on computer systems security through a balanced mixture of theory and practice.
We’ll start out with building the foundations of security through an exploration of cryptography. From there, we’ll move to more complex, multi-faceted systems such as web applications, operating systems, and networks. Along the way, we’ll explore complementary topics such as authentication, physical security, social engineering, privacy, anonymity, usability, and the security of emergent systems such as blockchains and machine learning.
By learning about security through these multiple domains, you’ll concretely learn how various classes of attacks appear in a vast variety of scenarios and how they work in practice. You’ll also learn how to evaluate systems adversarially, from writing precise security analyses about subtle issues in protocols to discovering and exploiting vulnerabilities in concrete technical systems for yourself.
Through all of these activities, you’ll ultimately work to develop a specific kind of intuition—a “security mindset”—that will give you the knowledge, vocabulary, and confidence to critically analyze and effectively defend the software and systems you approach as a computer scientist even after the course.
You should have an intro-sequence’s worth of programming experience (0160, 0180, or 0190) and have a good understanding of systems programming (0300, 0330, 1310, or 1330). This concretely means that:
If you don’t meet the official prerequisites but still want to take the course, please feel free to ask the instructors–we are happy to discuss your individual situation to determine if the course is right for you!
Your willingness to challenge yourself is perhaps the most important prerequsite for the course. Security can be frustrating at times, but the rewards are great. In exchange for engaging with some difficult intellectual challenges, you’ll have the opportunity to gain concrete insights about systems and security and become a better computer scientist along the way!
No data
Lecture notes and readings available at Lectures
No videos available
Assignments available at Assignments
Resources available at Resources