CS 161, Fall 2012 Computer Security


Dawn Song (675 Soda Hall)

Chia Yuan Cho
Nitesh Mor
Kurt Thomas
Joel Weinberger

MW 4:00-5:30P 277 Cory

Discussion sections:
Tue 10:00am - 11:00 am (75 Evans)
Tue 11:00am - 12:00 pm (75 Evans)
Thr 5:00pm - 6:00pm (310 Soda)

Office hours:
Thu 1:00-2:00 pm (TA) (611, Soda)
Fri 1:00-2:00 pm (TA) (751, Soda)


Course Schedule

The course syllabus includes information on lecture topics, readings, and assignment related deadlines.

Course Overview

In this class you will learn how to design secure systems and write secure code. You will learn how to find vulnerabilities in code and how to design software systems that limit the impact of security vulnerabilities. We will focus on principles for building secure systems and give many real world examples. In addition, the course will cover topics such as:

Course homework and labs will help students practice the concepts and techniques learned in class, such as how to find vulnerabilities and how to fix them. The labs and projects are designed to help students practice the principles of secure system design.


You must have taken CS 61C (Machine Structures). Also, you must have taken either Math 55 or CS 70 (Discrete Mathematics).

Labs, Midterms and Exams

There will be 6 labs and 2 midterms. There will be no final exam. Details will be announced in class.

Grading Summary

Midterms: 20% each
Labs: 10% each


This class does not have a required textbook. We will provide lecture notes, slides and videos for material covered (when applicable).

The above material is subject to change.

Note on Security Vulnerabilities

From time to time, we may discuss vulnerabilities in computer systems. This is not intended as an invitation to go exploit those vulnerabilities! It is important that we be able to discuss real-world experience candidly; everyone is expected to behave responsibly. Breaking into other people's systems is inappropriate, and the existence of a security hole is no excuse.