Syllabus Application
CS 560
Automated Debugging
Faculty
Faculty of Engineering and Natural Sciences
Semester
Spring 2025-2026
Course
CS 560 -
Automated Debugging
Time/Place
Time
Week Day
Place
Date
16:40-17:30
Mon
FENS-L067
Feb 16-May 22, 2026
08:40-10:30
Tue
FENS-L048
Feb 16-May 22, 2026
Level of course
Masters
Course Credits
SU Credit:3, ECTS:10
Prerequisites
-
Corequisites
-
Course Type
Lecture
Instructor(s) Information
Cemal Yılmaz
- Email: cyilmaz@sabanciuniv.edu
Course Information
Catalog Course Description
Program debugging is a process of identifying and fixing bugs. Identifying root causes is the hardest, thus the most expensive, component of debugging. Developers often take a slice of the statements involved in a failure, hypothesize a set of potential causes in an ad hoc manner, and iteratively verify and refine their hypotheses until root causes are located. Obviously, this process can be quite tedious and time-consuming. Furthermore, as software systems are getting increasingly complex, the inefficiencies of the manual debugging process are getting magnified. Many automated approaches have been proposed to facilitate program debugging. All these approaches share the same ultimate goal, which is to help developers quickly and accurately pinpoint the root causes of failures. This course will cover state-of-the-art automated debugging approaches from both practical and research perspectives and will consist of two main parts. The goal of the first part is two folds: 1) To turn program debugging from a black art (as many believe) into a systematic and well-organized discipline; and 2) To provide students with enough background information to read and understand the scientific literature. The topics which will be covered in the first part are: How Failures Come To Be, Tracking Problems, Making Programs Fail, Reproducing Problems, Simplifying Problems, Scientific Debugging, Deducing Errors, and Mining and Detecting Anomalies. The second part of the course will survey the related literature by dividing it into four broad categories, namely static- analysis-based, dynamic-analysis-based, model-based, and empirical approaches.
Course Learning Outcomes:
| 1. | Describe and apply the principles of systematic program debugging. |
|---|---|
| 2. | Identify, formulate, analyze, and solve basic problems related to automating the debugging process. |
| 3. | Design and implement basic automated debugging tools. |
| 4. | Use, analyze, and evaluate state-of-the-art debugging tools. |
| 5. | Read and understand the related scientific literature. |
Course Objective
To turn program debugging from a black magic (as many believe) into a systematic and well-organized discipline.
To introduce the principles of systematic program debugging.
To introduce the principles of automating the debugging process.
To introduce the basics of building automated debugging tools.
To introduce the basics of state-of-the-art debugging tools.
To survey the state-of-the-art approaches in the scientific literature.
-
To introduce the principles of systematic program debugging.
To introduce the principles of automating the debugging process.
To introduce the basics of building automated debugging tools.
To introduce the basics of state-of-the-art debugging tools.
To survey the state-of-the-art approaches in the scientific literature.