CS 161: Computer Security

Summer 2022

UC Berkeley

This course offers an introduction to computer security, including cryptography, operating system security, network security, and software security. It uses case studies from real-world systems. Prerequisites include experience working with large codebases and a basic understanding of modular arithmetic/set notation.

Course Page

Overview

Introduction to computer security. Cryptography, including encryption, authentication, hash functions, cryptographic protocols, and applications. Operating system security, access control. Network security, firewalls, viruses, and worms. Software security, defensive programming, and language-based security. Case studies from real-world systems.

Prerequisites

The prerequisites for CS 161 are:

  • CS 61B (Data Structures), for experience working with large codebases (500–1000 lines of code) and basic data structures. This is relevant for Project 2.
  • CS 61C (Machine Structures), for understanding of C memory layout and hex/binary number representation. This is relevant for the memory safety unit (Project 1). All necessary CS 61C content will be reviewed during lecture.
  • CS 70 (Discrete Math and Probability Theory), for basic understanding of modular arithmetic/set notation and some mathematical intuition. This is relevant in the cryptography unit. We will review any necessary CS 70 content in lectures, so don’t worry if you don’t feel very comfortable with all the CS 70 material.

We assume basic knowledge of C and Python. Some basic familiarity with Unix systems is helpful for Project 1. Project 2 is done in Go and we won’t have any lectures on Go syntax, so we expect students to be able to learn the basics of the language on their own.

Learning objectives

No data.

Textbooks and other notes

The readings are all linked on the course website and freely available. The majority of readings come from the course textbook, which is freely available for you to use as a study and review resource. All readings are optional (but recommended) unless otherwise indicated.

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 slides and readings available at Home

No videos available

Discussions with solutions available at Home

Projects available at Home

Resources available at Resources

Covered concepts