Software fuzzing is a testing technique that is heavily used in industry and studied in academia. The basic idea is simple: randomly generate inputs to the system under test and determine if the system executes properly for each input. However, there are many complexities and hard problems that arise when putting this idea into practice. We will study the different types of software fuzzing and the current state of fuzzing research through reading a number of relevant papers. In addition, students will work on a project related to fuzzing due at the end of the quarter (specifics to be negotiated with the instructor).
The first two weeks of class will be conducted via live synchronous Zoom lectures at the regular course times. See the course Gauchospace page for the links. We will also be interacting on a class Slack workspace; I will be sending a Slack invite to all registered students before the first class. If you think that you should be in this course but do not receive an invite by Monday afternoon (Jan 3), send me an email directly.