If systems are not reliable and secure the entire software stack falls apart. How can we test effectively large and complex software systems? How can we build reliable systems that are concurrent and distributed? How can we diagnose failures and performance problems in complex systems? What are the limitations and challenges of leveraging trusted hardware? What is the relation between testing and formal verification techniques?

This seminar course addresses the above questions. It will be heavily based on class discussion and will involve reviewing the current state-of-the-art. This course will focus mostly on practical aspects of building and testing systems. We will discuss several topics in this context, including data race detectors, symbolic execution tools, techniques that expose concurrency and distributed bugs, trusted hardware approaches, application of formal techniques to systems, and the results of empirical studies on systems reliability. Knowledge of operating systems, distributed systems or C programming is a plus.





Research Project: Students are expected to work on a research project within the scope of the course. The project can be individual or groups of student depending on the topic. Students will present the project proposal, status and results to class during the course.

Paper presentation: Each student is expected to present and lead the discussion of papers from the research literature to class (see the list of suggested papers). Students are expected to present the paper as if it was a conference talk: provide background, motivation, explain overall merit and technical details, and answer questions from the audience. Students should feel free to critique the paper (i.e., students do not need to be advocates of the paper). All students are expected to read the presented paper before class and participate in the class discussion.

Paper reviews: Each student will review six papers and write a written report for each of them, as if reviewing a conference paper.

For academic honesty refer to the Purdue integrity/code of conduct. Except as by prior arrangement or notification by the professor of an extension before the deadline, missing or late work will be counted as a zero/fail.

Suggested papers

In this course we are going to be discussing papers from top systems conferences (e.g., SOSP, EuroSys, ATC, HotOS) and security conferences (e.g., Usenix Security, SP (Oakland)). We will mostly focus on recent papers. Students can propose to discuss papers from other venues as long as the proposed papers fit within the scope of the course.