CSSE490 - The art and science of debugging

Rose-Hulman Institute of Technology

Computer Science and Software Engineering Department

Spring 2018-2019

Course description

Introduction to debugging. Systematic approaches to solving problems: search space, fault tree analysis, hazard analysis, instrumentation, tool usage, engineering process. Specific topics include failure stimulation, software debugging tools, problem isolation, non-deterministic errors, and data collection. There are many smaller in-class debugging and programming assignments and several larger out-of-class debugging projects.

Course prerequisites

CSSE 230 and C knowledge

Technical prerequisites

Students should be able to create and use C, assembly, and Java programs.

Social prerequisites

We expect students in this course to:


See the main course page for schedule details.


Section 1 : MTRF 5 in O167


Micah Taylor
Moench F205 - check my schedule


Addison Kremer

Course objectives

This is what you will learn through this course.

Required resources

Book: Debugging, David J. Agans AMACOM, 2002

Recommended resources

Book: Why Programs Fail, 2nd edition Andreas Zeller Morgan Kaufmann, 2009

In addition, the following software tools are required for the assignments:

Out of class assignments

Reading response

There are readings assigned each week. The readings and all related materials must be completed before the discussion session.


There will be several large debugging projects. A debugging log and the corresponding code changes must be submitted for each project.

Final project

There will a large debugging project. This will be debugging an actual bug found in open-source software. A debugging log and the correcting code changes must be submitted for the project. The project will be completed in teams.

In class assignments


A portion of this class will be discussing the content of the readings. You must participate in the weekly discussions to earn points for this assignment.


There are several labs that must be completed in class. Lab assignments will available on the course web site. Completed labs are submitted via verification and your code repository.


Assignment Weight
Reading 15%
Discussion 15%
Labs 20%
Project 20%
Final 30%


Collaboration is encouraged on homework, quizzes, and projects. It is prohibited on labs. When you collaborate, you must properly credit your collaborators and clearly indicate the extent of the collaboration. In all cases, each individual is responsible for understanding and writing out the entire solution. For example, on homework, this means that once a group solution has been achieved, each collaborator must rework the problem and write up the solution independently. Copying is not collaboration.

Any kind of plagiarism or cheating will result in a severe penalty in the course and Student Affairs will be notified. See this page for details.

In general, any actions that reduces your or your peer's ability or opportunity to learn can be considered academic misconduct. You are here to learn!


Rose provides a number of resources to help you:

Concerns or Feedback

If you have any concerns about any course matters, you should find someone to contact. You can email your instructor, speak to your instructor, or leave anonymous feedback on the course page. You can also contact the [mailto:mellor@rose-hulman.edu](CSSE department head), [http://www.rose-hulman.edu/offices-and-services/student-affairs.aspx](Student Affairs), or another Rose employee you feel comfortable with.