CS1660: Computer Systems Security

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.

Course Page

Overview

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.

Prerequisites

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:

  • You should be comfortable writing programs and scripts in the language of your choice (such as Python, Ruby, Bash, Go, C++, etc.), be comfortable in a Unix command-line environment (running binaries, filesystem navigation, etc.) and using SSH with the Brown CS filesystem, have a basic understanding of systems programming concepts such as memory management and networking.
  • You also should have heard of the terms “race condition”, “packet”, “TCP”, “UDP”, “buffer overflows”, and “DNS”. (If you forget what these are, don’t worry—we’ll describe them again when they come up in the latter half of the course.)
  • You should also be at least somewhat comfortable (and very willing) to learn new programming languages and reading code in languages and programs that you’ve never used before. (You’ll get lots of practice with this in this course!)

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!

Learning objectives

  • Provide an introduction to computer security
    • Overview security threats and defenses
  • Help you develop a security-aware mindset:
    • Take the big picture and understand the details
  • Learning by practicing
    • Consider ethical implications and tradeoffs of using, building, and testing secure systems

Textbooks and other notes

No data

Other courses in Computer Security and Cryptography

COS 433 - Cryptography

Fall 2020

Princeton University

CS 155 Computer and Network Security

Spring 2022

Stanford University

CS 255: Introduction to Cryptography

Winter 2023

Stanford University

Courseware availability

Lecture notes and readings available at Lectures

No videos available

Assignments available at Assignments

Resources available at Resources

Covered concepts