Automated Debugging Andreas Zeller + Marius Smytzek + Paul Zhu


Currently, no news are available

Automated Debugging

The Course. 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

  • The Debugging Process
  • Observing Executions
  • Asserting Expectations
  • Correlating Failures
  • Simplifying Failures
  • Abstracting Failures
  • Tracking Origins
  • Reproducing Failures
  • Repairing Failures (automatically!)
  • Learning From Mistakes

Course Material. The course material comes as a collection of Jupyter Notebooks, 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 1–2 new chapters (notebooks) on a new topic, which we will then discuss the next week in the classroom. All chapters are available at

The menu in the top left shows the individual chapters (as they are being written); the "Resources" menu allows you to work with the examples or download code or notebooks. Under "Help", you will find tutorials for Python and Jupyter.

Attending. The lectures for this course take place as a hybrid lecture and Zoom webinar, in which our lecturer (Andreas Zeller) will introduce you to the chapters to be read in the upcoming week and answer questions live and as posed in the chat. The Webinar runs every Tuesday from 16:15–17:45 in person and on Zoom.

The Projects. Your grade will be determined from a series of projects in which you will build your own automated debugging tools. Past project topics included:

  1. An Interactive Debugger for Python
  2. Automatically Simplifying Python Programs (like CReduce)
  3. Automatically Repairing Python Programs
  4. A Tool of your Design

You will implement projects using Jupyter Notebooks, using text and examples to document design choices and introduce your readers to the included Python code. Some of the projects can also be conducted in groups; individual contributions have to be clearly marked.

Grading. Grading will be based on projects; details will be announced.

The Prerequisites. We expect programming skills at the level of "Programming 2". Python knowledge and knowledge of program analysis and instrumentation can be acquired on the go. We use some statistics, logic, and machine learning, but nothing too exotic.

Questions and Answers. Use our Forum to ask questions and participate in discussions:

Or ask questions in the chat during the lecture and get immediate answers.

Date and Time. Every Tuesday 16:15–17:45, starting October 25.

Enjoy! – Andreas + Marius + Paul

Privacy Policy | Legal Notice
If you encounter technical problems, please contact the administrators