NewsCurrently, no news are available
Ask yourself: How many hours have you spent chasing bugs? So, wouldn't it be cool if the computer could take care of debugging your program? In this course, we discuss automated debugging and testing techniques such as
- Tracking program executions
- Building interactive debuggers
- Generating test inputs
- Simplifying inputs
- Automatic fault localization
- Learning from logs
- Checking assertions
- Learning invariants
- Failure-inducing input properties
- Repairing programs automatically
The course material comes as a collection of Jupyter Notebooks (similar to fuzzingbook.org), in which you can study how the individual techniques work – and even make your own experiments and create new combinations. Every week, you will be getting a new chapter (notebook) on a new topic, which we will then discuss the next week in the classroom. Your grade will be determined from a series of projects in which you will be building your own automated debuggers.
Prerequisites: Programming at the level of "Programming 2". Python knowledge is good, but can also be acquired on the spot. We use a bit of statistics, logic, and machine learning, but nothing too exotic.