Registration for this course is open until Wednesday, 30.10.2024 00:00.

News

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 debug 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 do 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

https://www.debuggingbook.org/

The menu in the top left shows the individual chapters; 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 an on-site lecture, in which our lecturer (Andreas Zeller) will introduce you to the chapters to be read in the upcoming week and answer questions. The lecture runs every Tuesday from 14:15–16:00 in person. The book also offers tutorial lectures for each chapter.

Weekly exercises. Every week, you will get an exercise sheet with exercises relating to the current chapter. Your solutions are due after one week and will be graded.

Projects. During the course, you will run two 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 in Python and use Jupyter Notebooks to document design choices and introduce your readers to the included code. We plan to allow the last project to be conducted in groups of two as long as individual contributions are clearly marked.

Exam. There will be an exam at the end of the course.

Grading. Grading will be based on

  • points achieved in weekly exercises (25%)
  • points achieved in Project 1 (25%)
  • points achieved in Project 2 (25%)
  • points achieved in the Exam (25%)

 To pass, you need to achieve 50% of points in each category and overall.

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

Questions and Answers. We will set up a Mattermost channel for questions and answers. You can also ask questions during the lecture and get immediate answers.

Date and Time. Every Tuesday, 14:15–16:00 in CISPA C0, Stuhlsatzenhaus 5, Lecture Hall 0.05.

The course starts on Tuesday, October 15. There will be no lectures on October 29, December 24, and January 1; the last lecture is on February 4.

Enjoy! – Andreas + Laura + Marius

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