Software Debugging

This course is offered through Udacity — you can add it to your Accredible profile to organize your learning, find others learning the same thing and to showcase evidence of your learning on your CV with Accredible's export features.


Course Date: Anytime (self-paced)

Price: free

Course Summary

In this course you will learn how to debug programs systematically using scientific methods and build several automated debugging tools in Python.

Course Instructors

Andreas Zeller

Andreas Zeller is a computer science professor at Saarland University, Germany. His research centers on programmer productivity: What can be done to ease the life and work of programmers? Among Linux and Unix programmers, he is best known for GNU DDD, a debugger front-end with built-in data visualization. Among academics and advanced professionals, Zeller is best known for Delta Debugging, a technique that automatically isolates failure causes for computer programs.

Gundega Dekena

Once upon a time Gundega was a Udacity student. In a way she still is, because she is learning new things from instructors she works with and her Udacity coworkers every day.If you occasionally want to read fun news about robotics, science and games, follow her on G+ - https://plus.google.com/+GundegaDekena.

▸ ▾ Andreas Zeller

Andreas Zeller is a computer science professor at Saarland University, Germany. His research centers on programmer productivity: What can be done to ease the life and work of programmers? Among Linux and Unix programmers, he is best known for GNU DDD, a debugger front-end with built-in data visualization. Among academics and advanced professionals, Zeller is best known for Delta Debugging, a technique that automatically isolates failure causes for computer programs.

▸ ▾ Gundega Dekena

Once upon a time Gundega was a Udacity student. In a way she still is, because she is learning new things from instructors she works with and her Udacity coworkers every day.If you occasionally want to read fun news about robotics, science and games, follow her on G+ - https://plus.google.com/+GundegaDekena.

Course Description

In this class you will learn how to debug programs systematically, how to automate the debugging process and build several automated debugging tools in Python.

Why Take This Course?

At the end of this course you will have a solid understanding about systematic debugging, will know how to automate debugging and will have built several functional debugging tools in Python.

Prerequisites and Requirements

Basic knowledge of programming and Python at the level of Udacity CS101 or better is required. Basic understanding of Object-oriented programming is helpful.

See the Technology Requirements for using Udacity

What Will I Learn?

Syllabus

Lesson 1: How Debuggers work

Theory: Scientific method and its application to debugging.
Fun fact: First bug in the history of computer science.
Practice: Building a simple tracer.

Lesson 2: Asserting Expectations

Theory: Assertions in testing and in debugging.
Fun fact: The most expensive bug in history.
Practice: Improving the tracer.

Lesson 3: Simplifying Failures

Theory: Strategy of simplifying failures. Binary search. Delta debugging principle.
Fun fact: Mozilla bugathon.
Practice: Building a delta debugger.

Lesson 4: Tracking Origins

Theory: Cause-effect chain. Deduction. Dependencies. Slices.
Fun fact: Sherlock Holmes and Doctor Watson.
Practice: Improving the delta debugger.

Lesson 5: Reproducing Failures

Theory: Types of bugs (Bohr bug, Heisenbug, Mandelbug, Schrodinbug). Systematic reproduction process.
Fun fact: Mad laptop bug.
Practice: Building a statistic debugging tool.

Lesson 6: Learning from Mistakes

Theory: Bug database management. Classifying bugs. Bug maps. Learning from mistakes.
Fun fact: Programmer with the most buggy code.
Practice: Improving your tools and practicing on a real world bug database.

Review course:

Please sign in to review this course.

Similar Courses


{{ course.name }} {{ course.name }}

{{ course.name}}

{{course.start_date | date:'MMM d'}} — {{ course.end_date | date:'MMM d'}}   ({{ course.time_until_course_starts }} ,   length: {{ course.length_in_weeks }} weeks) Self-paced — no deadlines    
${{ course.price }} p/mfree
TO-LEARN
TO-LEARN
ADDED!

REMOVE
FROM
LIST
ON PROFILE

Course Activity & Community

Be the first Accredible user to join this course!





uploaded {{ feed_item.model.caption || feed_item.model.url || feed_item.model.file_file_name }} for the course {{ feed_item.course.name }} — {{ feed_item.time_ago }}

{{ comment.user.name }} {{ comment.text | truncate: (comment.length || comment_display_length) }}   read more hide

{{ comment.time_ago }}

started the course {{ feed_item.course.name }} — {{ feed_item.time_ago }}
followed {{ feed_item.model.name }} — {{ feed_item.time_ago }}
followed thier friend {{ feed_item.model.name }} — {{ feed_item.time_ago }}
{{ feed_item.model.text }} (on the course {{ feed_item.course.name }}) — {{ feed_item.time_ago }}

{{ comment.user.name }} {{ comment.text | truncate: (comment.length || comment_display_length) }}   read more hide

{{ comment.time_ago }}