To make the most out of this course, you should reserve enough time to read papers. One paper is required, and thus directly examinable.

The recommended reading is divided into “Highly Recommended Reading”, which is directly related to the material covered in class, and “Additional Reading”, which will help you gain a deeper knowledge of the topics we cover.

Advice on Studying Papers

Take a look at this short paper on How to Read a Paper. This paper suggests an effective scheme for quickly getting to grips with a paper. You may find this useful when looking at the papers below. However, if you do follow this advice then consider limiting your “third pass”: the paper suggests that this may take 4-5 hours per paper, which is a bit much for this course.

You are strongly encouraged to study these papers collaboratively, with colleagues on the course.

To download some of these papers, you should be connected to the Imperial network.

Required Reading

You should read the papers under “Topic: Fuzzing” to get inspiration for the first open-ended coursework. In addition, you might want to read the following:

Topic: Introduction

Topic: Fuzzing

Topic: Compiler Testing & Derived Test Oracles

Topic: Undefined Behaviour

Topic: Compiler Sanitizers

Topic: Dynamic Symbolic Execution

Topic: Data Flow Analysis

Topic: Coverage Criteria & Mutation Testing

Additional Reading