Instructor: Sam Kumar
Lecture: TuTh 2:00-4:00 PM, 2232 Public Affairs Building
Office Hours: Th 4:00-5:00 PM and by appointment, 496B Engineering VI
Course announcements will posted on Piazza.
This course explores the design of software systems with strong security and privacy guarantees. It covers core principles of secure and privacy-preserving systems, such as threat modelling and side-channel resistance; common system paradigms, such as transparency, distributed trust, and computing on encrypted data; and techniques for achieving these guarantees, such as encryption, trusted execution environments, oblivious RAM, and differential privacy. Students study privacy-preserving systems with rich functionality such as anonymous messaging, oblivious search, and collaborative computation.
This is a lecture-based graduate course. Lectures focus on explaining the course material. Projects focus on applying the course material to build systems. Readings and presentations focus on analyzing and critiquing research papers that are relevant to the course material.
At the end of the term, each student is assigned a grade based on the following breakdown:
We will use Piazza as an online discussion forum for this class. You must join the Piazza forum for this course. Important announcements will be made on Piazza.
If you are unable to directly enroll in the course, then please follow the enrollment guidelines for computer science classes. If you would like to request a PTE to enroll in this course, then please talk to me about it after the first lecture of the course.
You are expected to follow the UCLA Student Conduct Code.
On programming assignments, the code that you submit must be your own work (for group assignments, work completed by you and your teammates). This means that you may not include code that you find online that is specific to the assignment, or use code that is produced by AI tools (e.g., ChatGPT), in your submissions for class assignments. That said, we do encourage you to speak with your classmates about concepts covered in class as they relate to assignments, approaches and designs for completing the assignments, and strategies for debugging code for the assignments. However, sharing your code with classmates or looking at your classmates' code (for group assignments, classmates outside of your group) is not allowed.
The following are examples of acceptable collaboration on programming assignments:
The following are examples of unacceptable collaboration on programming assignments: