18-732 — Secure Software Systems — Spring 2015

Meeting time and location

Tue & Thu

1:30–2:50pm EST in GCH 4307 /
10:30–11:50am PST in Bldg. 23 Rm. 211


Lujo Bauer

Teaching assistants

Jassim Aljuraidan
Yannis Mallios

Blase Ur

Office hours

Tue 9-10am EST in CIC 2203 (Lujo)

Tue 10-11:15am EST in CIC 2206 (Jassim)

Wed 2-3pm EST in CIC 2214 (Blase)

Wed 5:30-6:30pm EST / 2:30-3:30pm PST by video (Blase)

Fri 10:30-11:30am EST in CIC 2206 (Yannis)

Course description

This course will examine approaches, mechanisms, and tools used to make software systems more secure. We will motivate the study by discussing common software security threats (e.g., buffer overflow attacks, cross-site scripting). The majority of the course will be divided into four main modules: architectural approaches to building secure software (e.g., confinement, virtual machines, trusted computing); software analysis (e.g., static analysis and testing, model checking); language-based approaches to building secure software (e.g., type systems, proof-carrying code); and run-time enforcement of security policies (e.g., dynamic taint analysis). Time permitting, the course will also cover topics such as the importance of usability to building secure software systems.


Students will be evaluated based on five assignments, three in-class tests, and class participation. The assignments will provide students with practical experience with the tools and mechanisms studied in class. Students will work on the assignments in groups of two or three, and the assignments will be evenly spaced over the course of the semester.

Schedule (subject to change)